2012-07-13 107 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

相關問題