如何找出谁使用.NET在Windows中创建了文件?
我需要找出谁用.NET创建了一个文件 我已经尝试了以下方法:如何找出谁使用.NET在Windows中创建了文件?,.net,windows,filesystems,.net,Windows,Filesystems,我需要找出谁用.NET创建了一个文件 我已经尝试了以下方法: string FileLocation = @"C:\test.txt"; FileInfo droppedFile = new FileInfo(FileLocation); FileSecurity fileSecurity = droppedFile.GetAccessControl(); IdentityReference identityReference = fileSecurity.GetOwner(typeof(NTA
string FileLocation = @"C:\test.txt";
FileInfo droppedFile = new FileInfo(FileLocation);
FileSecurity fileSecurity = droppedFile.GetAccessControl();
IdentityReference identityReference = fileSecurity.GetOwner(typeof(NTAccount));
string userName = identityReference.Value;
Console.WriteLine(userName);
所有这些返回都是“内置\管理员”
我做错什么了吗?因为当我在资源管理器中查看C:\时,所有者会显示正确的用户名,当我执行上面的代码时,它会返回“BUILTIN\Administrators”
它甚至不是一个域和用户名,我认为它是一个安全组
感谢您的帮助。更新:我错了,文件对象有一个所有者描述符!(我的头在哪里)。看一看 可能是因为文件对象没有定义创建者或所有者,而是由系统本身(builtin\administrators)拥有。“组或用户名”列表仅指定有权访问文件的组和用户的列表,而不是特定的创建者
您可以做的最好的事情是反复浏览“组或用户名”列表,并猜测创建者是谁。如果用户是管理员,则他们创建的文件将被视为属于整个管理员组,而不是单个用户 您可以在资源管理器的“属性”对话框中看到相同的行为。令人烦恼的是,除了不让用户成为管理员之外,我认为没有任何解决办法 编辑:更详细地解释了这种行为。其基本原理是Windows将所有管理员视为单个实体;系统上的任何管理员都可以执行其他管理员可以执行的任何操作
- 如果一个管理员对一个文件具有权限,那么所有其他管理员也是如此
- 如果一名管理员被拒绝访问,那么其他管理员也会被拒绝访问
- 如果一个管理员拥有一个文件——该文件的所有者被授予访问该文件的特权——那么所有其他管理员也必须拥有该文件