Directory.SetAccessControl(String, DirectorySecurity) メソッド

定義

DirectorySecurity オブジェクトによって記述されたアクセス制御リスト (ACL) エントリを、指定されたディレクトリに適用します。

public static void SetAccessControl (string path, System.Security.AccessControl.DirectorySecurity directorySecurity);

パラメーター

path
String

アクセス制御リスト (ACL) エントリを追加または削除するディレクトリ。

directorySecurity
DirectorySecurity

path パラメーターによって記述されたディレクトリに適用する ACL エントリを記述する DirectorySecurity オブジェクト。

例外

directorySecurity パラメーターは nullです。

ディレクトリが見つかりませんでした。

path が無効でした。

現在のプロセスは、pathで指定されたディレクトリにアクセスできません。

-又は-

現在のプロセスには、ACL エントリを設定するための十分な特権がありません。

注釈

SetAccessControl メソッドは、アクセス制御リスト (ACL) エントリを、非暗号化 ACL リストを表すディレクトリに適用します。

注意事項

directorySecurity パラメーターに指定された ACL は、ディレクトリの既存の ACL を置き換えます。 新しいユーザーのアクセス許可を追加するには、GetAccessControl メソッドを使用して既存の ACL を取得し、変更します。

ACL は、特定のファイルまたはディレクトリに対する特定のアクションに対する権限を持っている、または持っていない個人とグループを記述します。 詳細については、「方法: アクセス制御リスト エントリ追加または削除する」を参照してください。

SetAccessControl メソッドは、オブジェクトの作成後に変更された DirectorySecurity オブジェクトのみを保持します。 DirectorySecurity オブジェクトが変更されていない場合、そのオブジェクトはファイルに永続化されません。 そのため、あるファイルから DirectorySecurity オブジェクトを取得し、同じオブジェクトを別のファイルに再適用することはできません。

ACL 情報をあるファイルから別のファイルにコピーするには:

  1. GetAccessControl メソッドを使用して、ソース ファイルから DirectorySecurity オブジェクトを取得します。

  2. コピー先ファイルの新しい DirectorySecurity オブジェクトを作成します。

  3. ACL 情報を取得するには、ソース DirectorySecurity オブジェクトの GetSecurityDescriptorBinaryForm または GetSecurityDescriptorSddlForm メソッドを使用します。

  4. SetSecurityDescriptorBinaryForm または SetSecurityDescriptorSddlForm メソッドを使用して、手順 3 で取得した情報をコピー先の DirectorySecurity オブジェクトにコピーします。

  5. SetAccessControl メソッドを使用して、コピー先 DirectorySecurity オブジェクトをコピー先ファイルに設定します。

NTFS 環境では、ユーザーが親フォルダーに対する ListDirectory 権限を持っている場合、ReadAttributesReadExtendedAttributes がユーザーに付与されます。 ReadAttributesReadExtendedAttributesを拒否するには、親ディレクトリの ListDirectory を拒否します。

適用対象

製品 バージョン
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1

こちらもご覧ください