次の方法で共有


TreeSetNamedSecurityInfoA 関数 (aclapi.h)

この関数のこのバージョンはサポートされていません。 この関数のワイド文字バージョンである TreeSetNamedSecurityInfoW がサポートされています。

構文

DWORD TreeSetNamedSecurityInfoA(
  [in]           LPSTR                pObjectName,
  [in]           SE_OBJECT_TYPE       ObjectType,
  [in]           SECURITY_INFORMATION SecurityInfo,
  [in, optional] PSID                 pOwner,
  [in, optional] PSID                 pGroup,
  [in, optional] PACL                 pDacl,
  [in, optional] PACL                 pSacl,
  [in]           DWORD                dwAction,
  [in]           FN_PROGRESS          fnProgress,
  [in]           PROG_INVOKE_SETTING  ProgressInvokeSetting,
  [in, optional] PVOID                Args
);

パラメーター

[in] pObjectName

更新されたセキュリティ情報を受け取るオブジェクトのルート ノード オブジェクトの名前を指定する、null終了文字列へのポインター。 サポートされているオブジェクトは、レジストリ キーとファイル オブジェクトです。 さまざまなオブジェクトの種類の文字列形式の説明については、SE_OBJECT_TYPEを参照してください。

[in] ObjectType

pObjectName パラメーターによって指定されたオブジェクトの型を示す SE_OBJECT_TYPE 列挙体の値。 サポートされている値は、レジストリ キーとファイル オブジェクトに対してそれぞれSE_REGISTRY_KEYとSE_FILE_OBJECTです。

[in] SecurityInfo

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

[in, optional] pOwner

オブジェクトの所有者を識別する SID 構造体へのポインター。 SID は、セキュリティ記述子の所有者 SID として割り当てることができる SID である必要があります。 SecurityInfo パラメーターには、OWNER_SECURITY_INFORMATION フラグを含める必要があります。 所有者を設定するには、呼び出し元がルート オブジェクトを含む各オブジェクトにWRITE_OWNERアクセスできる必要があります。 所有者 SID を設定しない場合、このパラメーターは NULLできます。

[in, optional] pGroup

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

[in, optional] pDacl

リセットするオブジェクトの新しい DACL を表す アクセス制御リスト (ACL) 構造体へのポインター。 SecurityInfo パラメーターには、DACL_SECURITY_INFORMATION フラグを含める必要があります。 呼び出し元には、ルート オブジェクトを含む各オブジェクトへのREAD_CONTROLとWRITE_DACアクセス権が必要です。 DACL を設定しない場合、このパラメーターは NULLできます。

[in, optional] pSacl

リセットされるオブジェクトの新しい SACL を表す ACL 構造体へのポインター。 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できます。

[in] dwAction

この関数の動作を指定します。 これは、AccCtrl.h で定義されている次のいずれかの値に設定する必要があります。

価値 意味
TREE_SEC_INFO_SET
0x00000001
セキュリティ情報は、pObjectName パラメーターで指定されたオブジェクトと、そのオブジェクトの子オブジェクトのツリーに設定されます。 pDacl または pSacl パラメーターで ACL が指定されている場合、セキュリティ記述子はオブジェクトに関連付けられます。 セキュリティ記述子は、継承プロパティに基づいて子オブジェクトのツリーに伝達されます。
TREE_SEC_INFO_RESET
0x00000002
セキュリティ情報は、pObjectName パラメーターで指定されたオブジェクトと、そのオブジェクトの子オブジェクトのツリーでリセットされます。 既存のセキュリティ情報は、ツリー上のすべてのオブジェクトから削除されます。

ツリー内のオブジェクトが、オブジェクトのセキュリティ記述子を変更するための適切なアクセス許可を呼び出し元に付与しない場合、ツリーとそのオブジェクトの特定のノードに対するセキュリティ情報の伝達はスキップされます。 この操作は、pObjectName パラメーターで指定されたオブジェクトの下にあるツリーの残りの部分で続行されます。

TREE_SEC_INFO_RESET_KEEP_EXPLICIT
0x00000003
セキュリティ情報は、pObjectName パラメーターで指定されたオブジェクトと、そのオブジェクトの子オブジェクトのツリーでリセットされます。 既存の継承されたセキュリティ情報は、ツリー上のすべてのオブジェクトから削除されます。 ツリー内のオブジェクトに対して明示的に設定されたセキュリティ情報は変更されません。

ツリー内のオブジェクトが、オブジェクトのセキュリティ記述子を変更するための適切なアクセス許可を呼び出し元に付与しない場合、ツリーとそのオブジェクトの特定のノードに対するセキュリティ情報の伝達はスキップされます。 この操作は、pObjectName パラメーターで指定されたオブジェクトの下にあるツリーの残りの部分で続行されます。

[in] fnProgress

TreeSetNamedSecurityInfo 関数の進行状況を追跡するために使用される関数へのポインター。 progress 関数のプロトタイプは次のとおりです。

#include <windows.h>
#include <Aclapi.h>
#pragma comment(lib, "Advapi32.lib")

typedef VOID (*FN_PROGRESS) (
  IN LPWSTR pObjectName,              // Name of object just processed
  IN DWORD Status,                    // Status of operation on object
  IN OUT PPROG_INVOKE_SETTING
                      pInvokeSetting, // When to set
  IN PVOID Args,                      // Caller specific data
  IN BOOL SecuritySet                 // Whether security was set
);

progress 関数は、ノードが処理されるときに、呼び出し元に進行状況とエラー情報を提供します。 呼び出し元は fnProgress進行状況関数を指定し、ツリー操作中に TreeSetNamedSecurityInfo 最後に処理されたオブジェクトの名前、その操作のエラー状態、および現在のPROG_INVOKE_SETTING値を渡します。 呼び出し元は、pInvokeSettingを使用して、PROG_INVOKE_SETTING値を変更できます。

progress 関数を使用しない場合は、このパラメーターを nullを に設定します。

[in] ProgressInvokeSetting

進行状況関数の初期設定を指定する PROG_INVOKE_SETTING 列挙体の値。

[in, optional] Args

呼び出し元によって指定された進行状況関数引数の VOID へのポインター。

戻り値

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

関数が失敗すると、WinError.h で定義されたエラー コードが返されます。

備考

NULL 所有者、グループ、DACL、または SACL の設定は、この関数ではサポートされていません。

呼び出し元に、要求された所有者、グループ、DACL、SACL の更新をサポートするための適切な特権とアクセス許可が含まれていない場合、更新は実行されません。

この関数は、dwAction パラメーターの値が TREE_SEC_INFO_SETに設定されている場合、ProgressInvokeSetting パラメーターの値が に設定されている場合、SetNamedSecurityInfo 関数と同じ機能を提供します。 progressInvokePrePostError、および fnProgress パラメーターが指す関数は、pInvokeSetting パラメーターの値を ProgressInvokePrePostErrorに設定します。

この関数は、TreeResetNamedSecurityInfo 関数に似ています。

  • TreeSetNamedSecurityInfodwAction パラメーターが TREE_SEC_INFO_RESET_KEEP_EXPLICIT に設定されている場合、この関数は、KeepExplicit パラメーターを TRUEに設定した TreeResetNamedSecurityInfo と同じです。
  • TreeSetNamedSecurityInfodwAction パラメーターが TREE_SEC_INFO_RESET に設定されている場合、この関数は、KeepExplicit パラメーターを FALSEに 設定した TreeResetNamedSecurityInfo と同じです。

手記

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

必要条件

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