次の2つのコードブロックを調べます。
System.Security.AccessControl.DirectorySecurity dsec = System.IO.Directory.GetAccessControl(str);
System.Security.Principal.NTAccount group= new System.Security.Principal.NTAccount("DOMAIN","USERGROUP");
System.Security.AccessControl.FileSystemAccessRule myrule = new System.Security.AccessControl.FileSystemAccessRule(group,System.Security.AccessControl.FileSystemRights.FullControl, System.Security.AccessControl.AccessControlType.Allow);
dsec.SetAccessRule(myrule);
System.IO.Directory.SetAccessControl(str,dsec);
と
System.Security.AccessControl.FileSecurity fsec = System.IO.File.GetAccessControl(file);
System.Security.Principal.NTAccount group= new System.Security.Principal.NTAccount("DOMAIN","USERGROUP");
System.Security.AccessControl.FileSystemAccessRule myrule = new System.Security.AccessControl.FileSystemAccessRule(group,System.Security.AccessControl.FileSystemRights.FullControl, System.Security.AccessControl.AccessControlType.Allow);
fsec.SetAccessRule(myrule);
System.IO.File.SetAccessControl(file,fsec);
どちらもまったく同じことを実行することを期待します。1つはディレクトリに対して、もう1つはファイルに対してのみです。そして、いくつかの点で、彼らはそうします。どちらの場合も、問題のファイルシステムオブジェクトは、DOMAIN\USERGROUPがフルコントロールの有効なアクセス許可を持つように変更されます。
ただし、奇妙な部分は、ファイルを右クリックしてセキュリティを表示すると、次のように表示されることです。
フォルダを右クリックしてセキュリティを表示すると、次のように表示されます。
次に、[詳細設定]->[有効なアクセス許可]->[選択(DOMAIN \ USERGROUP)]に移動すると、そのグループのフォルダーの有効なアクセス許可がフルコントロールであることが示されます(フルコントロールボックスだけでなく、すべてのボックスがオンになっています) 。それはさらに奇妙だろう)。
私の質問は、ほとんど同じ実装の効果に違いがあるのはなぜですか?ファイルにアクセス許可を適用する効果を複製する方法を知っている人はいますか?