次の方法で共有


SetNamedSecurityInfoA 関数 (aclapi.h)

SetNamedSecurityInfo 関数は、指定したオブジェクトの セキュリティ記述子 に指定されたセキュリティ情報を設定します。 呼び出し元は、名前でオブジェクトを識別します。

構文

DWORD SetNamedSecurityInfoA(
  [in]           LPSTR                pObjectName,
  [in]           SE_OBJECT_TYPE       ObjectType,
  [in]           SECURITY_INFORMATION SecurityInfo,
  [in, optional] PSID                 psidOwner,
  [in, optional] PSID                 psidGroup,
  [in, optional] PACL                 pDacl,
  [in, optional] PACL                 pSacl
);

パラメーター

[in] pObjectName

セキュリティ情報を設定するオブジェクトの名前を指定する、null終了文字列へのポインター。 NTFS ファイル システム、ネットワーク共有、レジストリ キー、セマフォ、イベント、ミューテックス、ファイル マッピング、または待機可能タイマー上のローカルまたはリモート のファイルまたはディレクトリの名前を指定できます。

さまざまなオブジェクトの種類の文字列形式の説明については、SE_OBJECT_TYPEを参照してください。

[in] ObjectType

pObjectName パラメーターによって指定されたオブジェクトの型を示す SE_OBJECT_TYPE 列挙体の値。

[in] SecurityInfo

設定するセキュリティ情報の種類を示すビット フラグのセット。 このパラメーターには、SECURITY_INFORMATION ビット フラグの組み合わせを指定できます。

[in, optional] psidOwner

オブジェクトの所有者を識別する SID 構造体へのポインター。 呼び出し元に SeRestorePrivilege 定数がない場合 (特権定数を参照)、この SID は呼び出し元のトークンに含まれている必要があり、SE_GROUP_OWNER アクセス許可が有効になっている必要があります。 SecurityInfo パラメーターには、OWNER_SECURITY_INFORMATION フラグを含める必要があります。 所有者を設定するには、呼び出し元がオブジェクトへのWRITE_OWNERアクセス権を持っているか、SE_TAKE_OWNERSHIP_NAME権限が有効になっている必要があります。 SIDの所有者 設定していない場合、このパラメーターは NULLできます。

[in, optional] psidGroup

オブジェクトのプライマリ グループを識別する SID へのポインター。 SecurityInfo パラメーターには、GROUP_SECURITY_INFORMATION フラグを含める必要があります。 プライマリ グループ SID を設定しない場合、このパラメーターは NULLできます。

[in, optional] pDacl

オブジェクトの新しい DACL へのポインター。 SecurityInfo パラメーターには、DACL_SECURITY_INFORMATION フラグを含める必要があります。 呼び出し元は、オブジェクトへのWRITE_DACアクセス権を持っているか、オブジェクトの所有者である必要があります。 DACL を設定しない場合、このパラメーターは NULLできます。

[in, optional] pSacl

オブジェクトの新しい SACL へのポインター。 SecurityInfo パラメーターには、SACL_SECURITY_INFORMATION、LABEL_SECURITY_INFORMATION、ATTRIBUTE_SECURITY_INFORMATION、SCOPE_SECURITY_INFORMATION、またはBACKUP_SECURITY_INFORMATIONのいずれかのフラグを含める必要があります。

SACL_SECURITY_INFORMATIONまたはSCOPE_SECURITY_INFORMATIONを設定する場合、呼び出し元はSE_SECURITY_NAME特権を有効にする必要があります。 SACL を設定しない場合、このパラメーターは NULLできます。

戻り値

関数が成功した場合、関数はERROR_SUCCESSを返します。

関数が失敗した場合、WinError.h で定義された 0 以外のエラー コードが返されます。

備考

随意アクセス制御リスト (DACL) またはオブジェクトの システム アクセス制御リスト (SACL) 内の要素を設定する場合、システムは、継承の 規則に従って、継承可能な アクセス制御エントリ (ACE) を既存の子オブジェクトに自動的に伝達します。

SetNamedSecurityInfo 関数は、次の種類のオブジェクトと共に使用できます。

  • NTFS 上のローカルまたはリモートのファイルまたはディレクトリ
  • ローカル プリンターまたはリモート プリンター
  • ローカルまたはリモートの Windows サービス
  • ネットワーク共有
  • レジストリ キー
  • セマフォ、イベント、ミューテックス、および待機可能タイマー
  • ファイル マッピング オブジェクト
  • ディレクトリ サービス オブジェクト
SetNamedSecurityInfo 関数は、優先順序に基づいてアクセス許可またはアクセス拒否 ACE の順序を変更しません。 継承可能な ACE を既存の子オブジェクトに伝達する場合、SetNamedSecurityInfo は、子オブジェクトの DACL 内のすべての非継承 ACE の後に継承された ACE を順番に配置します。

この関数は、プレーンテキスト情報を転送します。 この関数によって転送される情報は、システムに対して署名がオフになっていない限り署名されますが、暗号化は実行されません。

UNC パス (\Test\TestFolder など) によって示されるフォルダーのアクセス権を更新すると、元の継承された ACE が削除され、完全なボリューム パスは含まれません。

この関数を使用する例については、「オブジェクト の ACL の変更」または「オブジェクトの所有権の取得」を参照してください。

手記

aclapi.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして SetNamedSecurityInfo を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows XP [デスクトップ アプリ |UWP アプリ]
サポートされる最小サーバー Windows Server 2003 [デスクトップ アプリ |UWP アプリ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー aclapi.h
ライブラリ Advapi32.lib
DLL Advapi32.dll

関連項目

ACL

アクセス制御の

基本的なアクセス制御関数の

GetNamedSecurityInfo を する

GetSecurityInfo を する

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

SE_OBJECT_TYPE

SID の

SetSecurityInfo の