[英]Programmatically Adding Permissions to a Folder
我有一個問題,我需要為所有經過身份驗證的用戶添加對文件夾的訪問權限,以存儲與應用程序相關的設置。 我發現這可以通過以下代碼完成...
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));
我發現的問題是“Authenticated Users”是Windows上的系統帳戶,但是在Windows的不同語言版本上,此帳戶名被翻譯,例如在德國,該帳戶被稱為“Authentifizierte Benutzer”。 有沒有辦法知道這個帳戶的正確名稱(顯而易見的是通過每種語言並找到正確的帳戶名稱)。
我建議你使用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));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.