以编程方式向文件夹添加权限

时间:2012-07-13 21:59:16

标签: c# security permissions ntfs

我遇到一个问题,我需要为所有经过身份验证的用户添加对文件夹的访问权限,以存储与应用程序相关的设置。我发现可以使用以下代码完成此操作......

var Info = new DirectoryInfo(settingsdir);
var Security = Info.GetAccessControl(AccessControlSections.Access);

Security.AddAccessRule(
    new FileSystemAccessRule(
        "Authenticated Users", FileSystemRights.Modify,
        InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit,
        PropagationFlags.None,
        AccessControlType.Allow));

我发现的问题是"经过身份验证的用户"是Windows上的系统帐户,但在不同语言版本的Windows上,此帐户名称已被翻译,例如在德国,此帐户被称为“Authentifizierte Benutzer'”。有没有办法知道这个帐户的正确名称(显而易见的是通过每种语言并找到正确的帐户名称)。

1 个答案:

答案 0 :(得分:28)

我建议您使用众所周知的SID列表(请参阅http://support.microsoft.com/kb/243330)。经过身份验证的用户始终为SID:S-1-5-11。如果你使用它,它应该是语言无关的(但我还没有测试过)。

创建一个SecurityIdentifier并改为使用它:

var sid = new SecurityIdentifier(WellKnownSidType.AuthenticatedUserSid, null); 

Security.AddAccessRule(
   new FileSystemAccessRule(
       sid,
       FileSystemRights.Modify,
       InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit,
       PropagationFlags.None,
       AccessControlType.Allow));