RegOpenUserClassesRoot

指定したユーザの HKEY_CLASSES_ROOT キーへのハンドルを取得する。ユーザはアクセストークンによって識別される。

RegOpenUserClassesRoot hToken, dwOptions, samDesired, phkResult

hToken : [intptr] 対象のユーザを識別するプライマリまたはインパーソネーションアクセストークンへのハンドル。これは LogonUser、CreateRestrictedTokenDuplicateTokenDuplicateTokenExOpenProcessTokenOpenThreadToken 関数の呼び出しで返されるトークンハンドルである。
dwOptions : [int] このパラメータは予約されており、0 でなければならない。
samDesired : [int] キーに対して要求するアクセス権を指定するマスク。キーのセキュリティ記述子が呼び出し側プロセスに対して要求されたアクセスを許可しない場合、関数は失敗する。詳細はレジストリキーのセキュリティとアクセス権を参照のこと。
phkResult : [intptr] 開かれたキーへのハンドルを受け取る変数へのポインタ。返されたハンドルが不要になったら、RegCloseKey 関数を呼び出して閉じる。

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

解説

指定したユーザの HKEY_CLASSES_ROOT キーへのハンドルを取得する。ユーザはアクセストークンによって識別される。

[戻り値]
関数が成功した場合、戻り値は ERROR_SUCCESS となる。関数が失敗した場合、戻り値は Winerror.h で定義された 0
以外のエラーコードとなる。FormatMessage 関数に FORMAT_MESSAGE_FROM_SYSTEM
フラグを指定して呼び出すと、エラーの一般的な説明を取得できる。

[備考]
RegOpenUserClassesRoot 関数を使用すると、対話的ユーザ以外のユーザに対してマージされた
HKEY_CLASSES_ROOT
情報を取得できる。たとえば、クライアント/サーバアプリケーションのサーバコンポーネントは、RegOpenUserClassesRoot
を使用してクライアントのマージされた情報を取得できる。指定したユーザのユーザプロファイルがロードされていない場合、RegOpenUserClassesRoot
は失敗する。ユーザが対話的にログオンすると、システムは自動的にユーザのプロファイルをロードする。それ以外のユーザについては、LoadUserProfile
関数を呼び出してユーザのプロファイルをロードできる。ただし、LoadUserProfile
は非常に時間がかかる可能性があるため、ユーザのマージされた HKEY_CLASSES_ROOT
情報を取得することがどうしても必要な場合を除き、この目的で呼び出さないこと。対話的にログオンしたユーザのセキュリティコンテキストで実行されているアプリケーションは、RegOpenUserClassesRoot
を使用する必要はない。これらのアプリケーションは、RegOpenKeyEx 関数を呼び出して対話的ユーザの
HKEY_CLASSES_ROOT キーのマージされたビューを取得できる。

情報

プラグイン / モジュール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