2012-11-28 14 views
0

我在ACL中爲我的文件夾添加組,但我無法選中/取消選中它。加入ACL:如何選中或取消選中選項

String account = @"HYPROSTROY\Все сотрудники"; 
FileSystemRights rights = FileSystemRights.FullControl; 
// I have tried and it too: 
// FileSystemRights rights = FileSystemRights.Read | FileSystemRights.Write | FileSystemRights.Modify; 
AccessControlType controlType = AccessControlType.Allow; 
DirectorySecurity security = local_commonDir.Parent.GetAccessControl(AccessControlSections.Access); 
FileSystemAccessRule rule = new FileSystemAccessRule(account, rights, controlType); 

security.AddAccessRule(rule); 
// local_commonDir - экземпляр DirectoryInfo 
local_commonDir.Parent.SetAccessControl(security); 

組,但所有選項都選中:

enter image description here

UPD === 我有嘗試其他方法:

// String account = Path.Combine(Environment.MachineName, "Пользователи"); 
String account = @"HYPROSTROY\Все сотрудники"; 
FileSystemRights rights = FileSystemRights.FullControl;     
AccessControlType controlType = AccessControlType.Allow;      
DirectorySecurity security = local_commonDir.Parent.GetAccessControl(AccessControlSections.All); 
FileSystemAccessRule rule = new FileSystemAccessRule(account, rights, controlType); 
//security.AddAccessRule(rule); 
Boolean result; 
security.ModifyAccessRule(AccessControlModification.Add, rule, out result); 
local_commonDir.Parent.SetAccessControl(security); 

但選項未被選中:(

我的錯誤在哪裏?

回答

0

我找到了解決辦法:

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); 
0

這個工作對我來說:

dir = "C:\test"; 
DirectorySecurity security = Directory.GetAccessControl(dir); 
FileSystemAccessRule rule = new FileSystemAccessRule("Account", FileSystemRights.FullControl, AccessControlType.Allow); 
security.AddAccessRule(rule); 

Directory.SetAccessControl(dir,security); 
+0

但它不是workong我。 :( –

+0

這裏也是msdn的示例... http://msdn.microsoft.com/en-us/library/system.io.directoryinfo.setaccesscontrol%28v=vs.90%29.aspx, 但是我在本文中看到http://msdn.microsoft.com/en-us/library/t1h6d4k4%28v=vs.90%29.aspx以下內容:調用此方法重載相當於調用GetAccessControl方法重載並指定訪問控制部分AccessControlSections.Access | AccessControlSections.Owner | AccessControlSections.Group – JJschk

+0

看看我的「UPD」。我也試過使用'ModifyAccessRule',但它不幫助我。 –

相關問題