File.SetAccessControl(String, FileSecurity) メソッド

定義

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

public:
 static void SetAccessControl(System::String ^ path, System::Security::AccessControl::FileSecurity ^ fileSecurity);
public static void SetAccessControl (string path, System.Security.AccessControl.FileSecurity fileSecurity);
static member SetAccessControl : string * System.Security.AccessControl.FileSecurity -> unit
Public Shared Sub SetAccessControl (path As String, fileSecurity As FileSecurity)

パラメーター

path
String

アクセス制御リスト (ACL) エントリを追加または削除するファイル。

fileSecurity
FileSecurity

path パラメーターで記述されたファイルに適用する ACL エントリを記述する FileSecurity オブジェクト。

例外

ファイルを開くときに I/O エラーが発生しました。

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

ファイルが見つかりませんでした。

path パラメーターは、読み取り専用のファイルを指定しました。

-又は-

この操作は、現在のプラットフォームではサポートされていません。

-又は-

path パラメーターでディレクトリが指定されました。

-又は-

呼び出し元に必要なアクセス許可がありません。

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

注釈

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

注意

fileSecurity パラメーターに指定された ACL は、ファイルの既存の ACL を置き換えます。 新しいユーザーのアクセス許可を追加するには、GetAccessControl メソッドを使用して既存の ACL を取得し、変更してから、SetAccessControl を使用してファイルに適用します。

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

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

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

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

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

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

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

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

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

適用対象

こちらもご覧ください