SetSecurityDescriptorDacl

任意アクセス制御リスト (DACL) に情報を設定する。セキュリティ記述子にすでに DACL が存在する場合、DACL は置き換えられる。

SetSecurityDescriptorDacl pSecurityDescriptor, bDaclPresent, pDacl, bDaclDefaulted

pSecurityDescriptor : [int] 関数が DACL を追加する SECURITY_DESCRIPTOR 構造体へのポインタ。このセキュリティ記述子は絶対形式でなければならず、そのメンバは連続データへのオフセットではなく他の構造体へのポインタでなければならない。
bDaclPresent : [int] セキュリティ記述子に DACL があることを示すフラグ。このパラメータが TRUE の場合、関数は SECURITY_DESCRIPTOR_CONTROL 構造体に SE_DACL_PRESENT フラグを設定し、pDacl および bDaclDefaulted パラメータの値を使用する。このパラメータが FALSE の場合、関数は SE_DACL_PRESENT フラグをクリアし、pDacl および bDaclDefaulted は無視される。
pDacl : [var] セキュリティ記述子の DACL を指定する ACL 構造体へのポインタ。このパラメータが NULL の場合、NULL DACL がセキュリティ記述子に割り当てられ、オブジェクトへのすべてのアクセスが許可される。DACL はセキュリティ記述子にコピーされるのではなく参照される。
bDaclDefaulted : [int] DACL のソースを示すフラグ。このフラグが TRUE の場合、DACL は何らかの既定メカニズムによって取得されたものである。FALSE の場合、DACL はユーザが明示的に指定したものである。関数はこの値を SECURITY_DESCRIPTOR_CONTROL 構造体の SE_DACL_DEFAULTED フラグに格納する。このパラメータが指定されない場合、SE_DACL_DEFAULTED フラグはクリアされる。

(プラグイン / モジュール : advapi32.dll)

解説

任意アクセス制御リスト (DACL) に情報を設定する。セキュリティ記述子にすでに DACL が存在する場合、DACL は置き換えられる。

[戻り値]
関数が成功した場合、関数は 0 以外を返す。関数が失敗した場合、0 を返す。拡張エラー情報を取得するには GetLastError
を呼び出す。

[備考]
空の DACL と存在しない DACL には重要な違いがある。DACL が空の場合、アクセス制御エントリ (ACE)
は含まれないため、アクセス権は明示的には付与されない。その結果、オブジェクトへのアクセスは暗黙的に拒否される。オブジェクトに DACL
がない場合(pDacl パラメータが NULL
の場合)、オブジェクトには保護が割り当てられず、すべてのアクセス要求が許可される。セキュリティを維持するため、DACL
を使用してアクセスを制限する。bDaclPresent フラグと pDacl パラメータの構成の違いによって、次の 3
通りの結果がありうる:
(以下省略)

情報

プラグイン / モジュールadvapi32.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の advapi32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_advapi32_gen2.hs