c#
  • inheritance
  • permissions
  • folder
  • 2012-02-10 163 views 1 likes 
    1

    如何创建/编辑/添加文件夹权限到特定文件夹?本地磁盘C中有一个名为“test”的文件夹。如何使用C#将权限设置为该文件夹?如何设置文件夹权限

    我写了一些代码已经:

    public void getusers() 
    { 
        SelectQuery squery = new SelectQuery("Win32_UserAccount", "Domain='" + System.Environment.UserDomainName.ToString() + "'"); 
        try 
        { 
         ManagementObjectSearcher msearchar = new ManagementObjectSearcher(squery); 
    
         foreach (ManagementObject mobject in msearchar.Get()) 
         { 
          comboBox1.Items.Add(mobject["Name"]); 
         } 
        } 
        catch (Exception e) { MessageBox.Show(e.ToString()); } 
    } 
    
    private void button1_Click(object sender, EventArgs e) 
    { 
        FolderBrowserDialog fbd = new FolderBrowserDialog(); 
        fbd.ShowDialog(); 
        textBox1.Text = fbd.SelectedPath.ToString(); 
    } 
    
    private void button2_Click(object sender, EventArgs e) 
    { 
        DirectoryInfo myDirectoryInfo = new DirectoryInfo(textBox1.Text); 
    
        DirectorySecurity myDirectorySecurity = myDirectoryInfo.GetAccessControl(); 
        string User = System.Environment.UserDomainName + "\\" + comboBox1.SelectedItem.ToString(); 
    
        myDirectorySecurity.AddAccessRule(new FileSystemAccessRule(User, FileSystemRights.FullControl, InheritanceFlags.ContainerInherit, PropagationFlags.None, AccessControlType.Allow)); 
        //myDirectorySecurity.AddAccessRule(new FileSystemAccessRule(User, FileSystemRights.Write, InheritanceFlags.ContainerInherit, PropagationFlags.None, AccessControlType.Allow)); 
    
        myDirectoryInfo.SetAccessControl(myDirectorySecurity); 
        MessageBox.Show("Permissions Altered Successfully" + User); 
    } 
    

    此代码已经成功地将用户添加到该文件夹​​,但设置该文件夹的permissionIi不被继承的。我错过了什么?或者有人可以指导我如何继承该文件夹的权限?

    +0

    请不要在“C#”等前加上标题。这就是标签的用途。 – 2012-02-10 03:19:26

    回答

    0

    它看起来像你对我只是缺少这个标志,你会加入使用位运算符在参数列表:

    InheritanceFlags.ObjectInherit

    还有更多的细节,包括一个链接到一个谷歌电子表格使用权限和设置的矩阵,在这个线程: Setting Inheritance and Propagation flags with set-acl and powershell

    希望这有助于...

    3

    如果继承你的意思是所有的孩子Ø对象获得相同的权限,您需要将您的PropagationFlags设置为InheritOnly。此外,如果您希望文件也符合规则集的权限,请将您的InheritanceFlags更改为ObjectInherit。尝试使用下面的这一行。

    myDirectoryInfo.AddAccessRule(new FileSystemAccessRule(User, FileSystemRights.FullControl, InheritanceFlags.ObjectInherit, PropagationFlags.InheritOnly, AccessControlType.Allow)); 
    
    +0

    提前致谢。它已经修复。 – user1201145 2012-02-13 01:50:16

    相关问题