2012-02-10 19 views
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#」などのプレフィックスを付けないでください。それがタグのためのものです。ありがとうございます。 –

答えて

0

あなたがちょうどあなたがあなたのパラメータリストにビット演算子を使用して参加することになる、このフラグが欠落しているようですが、私には見えます:

InheritanceFlags.ObjectInherit

へのリンクを含む詳細は、あります。このスレッドの権限や設定のマトリックスとGoogleスプレッドシート、: Setting Inheritance and Propagation flags with set-acl and powershell

希望継承によって、すべての子のOという意味ならば、これは...

3

を支援オブジェクトに同じアクセス権が与えられたら、PropagationFlagsをInheritOnlyに設定する必要があります。さらに、ファイルがルールセットの許可と一致するようにするには、InheritanceFlagsをObjectInheritに変更します。以下の行を試してみてください。

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

それはすでに修正されています。 – user1201145

関連する問題