RegOpenUserClassesRoot 関数 (winreg.h)

指定したユーザーの HKEY_CLASSES_ROOT キーへのハンドルを取得します。 ユーザーはアクセス トークンによって識別されます。 返されるキーには、 HKEY_LOCAL_MACHINE\Software\Classes キーの内容と、ユーザーのレジストリ ハイブ内の Software\Classes キーの内容をマージするレジストリのビューがあります。 詳細については、「 HKEY_CLASSES_ROOT キー」を参照してください。

構文

LSTATUS RegOpenUserClassesRoot(
  [in]  HANDLE hToken,
        DWORD  dwOptions,
  [in]  REGSAM samDesired,
  [out] PHKEY  phkResult
);

パラメーター

[in] hToken

関心のあるユーザーを識別するプライマリ アクセス トークンまたは偽装アクセス トークンへのハンドル。 これは、LogonUserCreateRestrictedTokenDuplicateToken、DuplicateTokenExOpenProcessTokenまたは OpenThreadToken 関数の呼び出しによって返されるトークン ハンドルです。

ハンドルにはTOKEN_QUERYアクセス権が必要です。 詳細については、「 Access-Token オブジェクトのアクセス権」を参照してください。

dwOptions

このパラメーターは予約されており、0 である必要があります。

[in] samDesired

キーに対して必要なアクセス権を指定するマスク。 キーのセキュリティ記述子が呼び出し元プロセスに対して要求されたアクセスを許可しない場合、関数は失敗します。 詳細については、「 レジストリ キーのセキュリティとアクセス権」を参照してください。

[out] phkResult

開かれたキーへのハンドルを受け取る変数へのポインター。 返されたハンドルが不要になったら、 RegCloseKey 関数を呼び出して閉じます。

戻り値

関数が成功した場合、戻り値は 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 キーのマージされたビューを取得できます。

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー winreg.h (Windows.h を含む)
Library Advapi32.lib
[DLL] Advapi32.dll

関連項目

LoadUserProfile

RegCloseKey

RegOpenKeyEx

レジストリ関数

レジストリの概要