2009-09-18 15 views

答えて

8

System.Security.AccessControl名前空間のクラス、特にDirectorySecurity.RemoveAccessRuleメソッドを見てください。

また、あなたはすべての権限を削除した場合、あなたが:-)その後任意のバックを追加することはできません

+0

このツールは、自分のコードが正常に機能しているかどうかをチェックするのに便利です。フォルダ階層内で設定されたディレクトリアクセス許可が表示されます。つまり、権限が設定されている場合のみ、継承されない場合のみ - http://www.youtube.com/watch?v=aZLIioUl-5k – pfeds

3

は、Windows ACLのプログラミングについてCodeProjectのからの記事の偉大なセットです

シリーズの

The Windows Access Control Model

Part 3は、.NET特定のメソッドを示しています。

2

System.IO.Directory.GetAccessControl()そして、返されたFileSecurityオブジェクトを編集します。

+0

ディレクトリbudyを次のように

private static DirectorySecurity RemoveExplicitSecurity(DirectorySecurity directorySecurity) { AuthorizationRuleCollection rules = directorySecurity.GetAccessRules(true, false, typeof(System.Security.Principal.NTAccount)); foreach (FileSystemAccessRule rule in rules) directorySecurity.RemoveAccessRule(rule); return directorySecurity; } 

そして、これは明らかに使用されています。 –

+0

ほぼ同じ^^今変更しました。 – codymanix

20

免責事項:私は、これはすでに答えて受け入れられている実感、そして私が実際に投稿したかったですこれは受け入れられた回答へのコメントとしてコメントをフォーマットすることができないという理由で、私はこれを回答として投稿しなければなりませんでした。(技術的には、それは...)

私はあなたの質問を見つけました。 Stuの答えは、私がこの解決策を考え出すのを助けました。 (明示的なセキュリティを削除することにのみ関心があることに注意してください)。

DirectoryInfo directoryInfo = new DirectoryInfo(path); 
DirectorySecurity directorySecurity = directoryInfo.GetAccessControl(); 
directorySecurity = RemoveExplicitSecurity(directorySecurity); 
Directory.SetAccessControl(path, directorySecurity); 
+0

完全に有効な追加の回答! –

+0

良い解決策ですが、ここで明示的なルールを削除しているので、RemoveEXPLICITを暗黙的に呼び出さないといけないと思います。 – md1337

+0

@ md1337これを反映するために、ありがとう、編集されたポスト。 – Bryan

関連する問題