如何设置文件夹权限

时间:2012-02-10 03:13:17

标签: c# inheritance permissions directory

如何创建/编辑/添加特定文件夹的文件夹权限?本地磁盘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根本不会继承。我错过了什么?或者有人可以指导我如何继承该文件夹的权限?

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

在我看来,您只是缺少此标志,您将使用参数列表中的按位运算符加入该标志:

InheritanceFlags.ObjectInherit

在此主题中有更多详细信息,包括指向具有权限和设置矩阵的Google电子表格的链接: Setting Inheritance and Propagation flags with set-acl and powershell

希望这会有所帮助......