2012-07-13 109 views
15

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

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'。有没有办法知道这个帐户的正确名称(不需要通过每种语言并找到正确的帐户名称)。

回答

26

我建议你使用已知的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)); 
+0

太谢谢你了!我会测试(我已经设置了一切)并确认它是否有效。 – 2012-07-13 22:21:08

+1

工程就像一个魅力!通过仔细观察文档,我应该亲自抓住它。非常感激。 – 2012-07-13 22:32:42

+0

帮我+1 :-) – Jodrell 2014-03-20 16:30:52

相关问题