【问题标题】:Programmatically Adding Permissions to a Folder以编程方式向文件夹添加权限
【发布时间】:2012-07-13 19:14:45
【问题描述】:

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

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”。有没有办法知道该帐户的正确名称(无需遍历每种语言并找到正确的帐户名称)。

【问题讨论】:

    标签: c# security permissions ntfs


    【解决方案1】:

    我建议您使用 Well Known 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));
    

    【讨论】:

    猜你喜欢
    • 2010-11-05
    • 1970-01-01
    • 2014-07-03
    • 2021-11-19
    • 2013-01-04
    • 2014-10-13
    • 1970-01-01
    • 2014-06-11
    • 2017-03-07
    相关资源
    最近更新 更多