[c#]每个人的 sid 在 Windows 8 中

标签: windows C#
发布时间: 2013/12/8 6:03:12
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我正在开发一个.net 3.5 应用程序,应该在这两个 windows 8 和 7 上运行。

作为应用程序的一部分我创造了一个新的文件夹下 C:\ProgramData。

创建文件夹后我设置下面的 ACL-允许每个人读和写。

 var directorySecurity = directoryInfo.GetAccessControl();
 var worldSecurityIdentifier = new SecurityIdentifier(WellKnownSidType.WorldSid, null);     
 directorySecurity.AddAccessRule(new FileSystemAccessRule(worldSecurityIdentifier, FileSystemRights.Read, AccessControlType.Allow));
 directorySecurity.AddAccessRule(new FileSystemAccessRule(worldSecurityIdentifier, FileSystemRights.Write, AccessControlType.Allow));

在 Windows 8 上遇到下面的行为: 如果将一个文件复制到该目录中,当我看着文件的属性中的安全选项卡,这是我看到的。

Security tab of a file that was copied into the directory

我不明白谁是此用户和它的创建方式。和还在哪里我为每个人定义的 ACL 吗?

看来此未知的 SID 了我每个人都为自己设定的 Acl。

我怀疑的也许这是因为我正在开发上.net 3.5 而不是 4,但当我更改目标框架为 4 时它没有帮助。

当我在调试检查什么是 worldSecurityIdentifier 时,这就是我

enter image description here

任何人都可以帮我弄吗?

解决方法 1:

请尝试:

directorySecurity.AddAccessRule(
   new FileSystemAccessRule(
       worldSecurityIdentifier,
       FileSystemRights.Read | FileSystemRights.Write,
       InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit,
       PropagationFlags.None,
       AccessControlType.Allow));

这将设置 ACE,因此它由子对象继承。

赞助商