ObjectSecurity.GetOwner返回组而不是用户

Rik*_*son 3 .net c# windows-security

我正在尝试确定创建特定文件的用户,如下所示:

string path = "C:\\TheFile.dat";
string user = System.IO.File.GetAccessControl(path).GetOwner(typeof(System.Security.Principal.NTAccount)).ToString();
Run Code Online (Sandbox Code Playgroud)

如果文件是由不是 Administrators用户组成员的用户创建的,则返回用户的用户名.然而,当文件被别人谁创造管理员用户组的成员,"域\管理员"被退回.

任何人都可以想到为什么会发生这种情况以及如何确保返回实际的用户名?

谢谢.

Teo*_*gul 6

这是操作系统本身的默认行为.刚刚创建了一个新文件并按照:"右键单击>安全选项卡>高级>所有者",您将看到如果您是管理员,则所有者选项卡中将有两个条目.第一个"管理员"第二个是创建该文件的用户.如果这是客户端的计算机,这将始终是默认行为.原因是:如果用户是管理员,则他们创建的文件将被视为由整个管理员组拥有,而不是由单个用户拥有.