ObjectSecurity.GetOwner返回组而不是用户

时间:2011-05-16 10:48:14

标签: c# .net windows-security

我正在尝试确定创建特定文件的用户:

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

如果文件是由管理员用户组成员的用户创建的,则会返回用户的用户名。但是,如果文件是由 某个管理员用户组成员的人创建的,则会返回“Domain \ Administrators”。

有谁能想到为什么会发生这种情况以及如何确保返回实际的用户名?

感谢。

1 个答案:

答案 0 :(得分:6)

这是操作系统本身的默认行为。刚刚创建了一个新文件,然后点击:'右键单击>安全标签>高级>所有者',您会看到如果您是管理员,则所有者标签中会有两个条目。第一个“管理员”第二个是创建该文件的用户。如果这是客户端的计算机,这将始终是默认行为。原因是:如果用户是管理员,那么他们创建的文件将被视为归整个管理员组所有,而不是个人用户。