2012-11-27 42 views
1

我的程序將子目錄和文件從服務器複製到本地計算機。我需要,每個本地用戶都可以修改它(編輯/刪除/刪除/重命名)。但現在它只能做主人。如何爲複製的目錄及其子項設置必要的權限? 我嘗試這樣的代碼:設置目錄和子項目的權限

String account = Path.Combine(Environment.MachineName, "Users"); 
FileSystemRights rights = FileSystemRights.FullControl; 
AccessControlType controlType = AccessControlType.Allow; 
DirectorySecurity security = local_commonDir.GetAccessControl(AccessControlSections.Access); 
FileSystemAccessRule rule = new FileSystemAccessRule(account, rights, controlType); 
security.AddAccessRule(rule); 
local_commonDir.SetAccessControl(security); 

但我得到異常:

一些或鏈接屬性不能改變。

如果我添加缺席訪問控制,則錯誤不存在。我認爲收到錯誤是因爲「用戶」已經存在。我如何改變現有的權利?

回答

1

我找到了解決辦法:

WindowsIdentity id = WindowsIdentity.GetCurrent(); 
var sid = new SecurityIdentifier(WellKnownSidType.AccountDomainUsersSid, id.User.AccountDomainSid); 
var security = dir.GetAccessControl(); 
var rule = new FileSystemAccessRule(sid, 
    FileSystemRights.FullControl, 
    InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, 
    PropagationFlags.None, 
    AccessControlType.Allow); 
security.AddAccessRule(rule); 
dir.SetAccessControl(security);