RegCreateKeyExW 関数 (winreg.h)
指定したレジストリ キーを作成します。 キーが既に存在する場合は、関数によってキーが開かれます。 キー名では大文字と小文字が区別されないことに注意してください。
キーに対してトランザクション レジストリ操作を実行するには、RegCreateKeyTransacted 関数を呼び出します。
システム ファイルやレジストリ ハイブを含むシステム状態をバックアップまたは復元するアプリケーションでは、レジストリ関数の代わりに ボリューム シャドウ コピー サービス を使用する必要があります。
構文
LSTATUS RegCreateKeyExW(
[in] HKEY hKey,
[in] LPCWSTR lpSubKey,
DWORD Reserved,
[in, optional] LPWSTR lpClass,
[in] DWORD dwOptions,
[in] REGSAM samDesired,
[in, optional] const LPSECURITY_ATTRIBUTES lpSecurityAttributes,
[out] PHKEY phkResult,
[out, optional] LPDWORD lpdwDisposition
);
パラメーター
[in] hKey
開いているレジストリ キーへのハンドル。 呼び出し元のプロセスには、キーへのKEY_CREATE_SUB_KEYアクセス権が必要です。 詳細については、「レジストリ キーのセキュリティとアクセス権のを
キー作成のアクセスは、ハンドルが取得されたときに指定されたアクセス マスクではなく、レジストリ キーのセキュリティ記述子に対してチェックされます。 したがって、hKey が samDesired のKEY_READで開かれた場合でも、セキュリティ記述子で許可されている場合はレジストリを変更する操作で使用できます。
このハンドルは、
- HKEY_CLASSES_ROOT
- HKEY_CURRENT_CONFIG
- HKEY_CURRENT_USER
- HKEY_LOCAL_MACHINE
- HKEY_USERS
[in] lpSubKey
この関数が開くか作成するサブキーの名前。 指定するサブキーは、hKey パラメーターによって識別されるキーのサブキーである必要があります。レジストリ ツリーの深いレベルは最大 32 レベルです。 キー名の詳細については、「レジストリの
lpSubKey
このパラメーターは NULL
Reserved
このパラメーターは予約済みであり、0 である必要があります。
[in, optional] lpClass
このキーのユーザー定義クラス型。 このパラメーターは無視できます。 このパラメーターは NULL
[in] dwOptions
このパラメーターには、次のいずれかの値を指定できます。
価値 | 意味 |
---|---|
|
このフラグが設定されている場合、関数は samDesired パラメーター |
|
レジストリ シンボリック リンク 絶対に必要な場合にのみ、アプリケーションの互換性 使用 必要があります。
|
|
このキーは揮発性ではありません。これが既定値です。 情報はファイルに格納され、システムの再起動時に保持されます。 RegSaveKey 関数は、揮発性ではないキーを保存します。 |
|
関数によって作成されるすべてのキーは揮発性です。 情報はメモリに格納され、対応するレジストリ ハイブがアンロードされるときに保持されません。
HKEY_LOCAL_MACHINEの場合、これはシステムが完全なシャットダウンを開始した場合にのみ発生します。
RegLoadKey 関数によって読み込まれたレジストリ キーの場合、これは対応する RegUnLoadKey が実行されるときに発生します。
RegSaveKey 関数は揮発性キーを保存しません。 このフラグは、既に存在するキーでは無視されます。
注 ユーザーが選択したシャットダウンでは、高速スタートアップ シャットダウンがシステムの既定の動作です。
|
[in] samDesired
作成するキーのアクセス権を指定するマスク。 詳細については、「レジストリ キーのセキュリティとアクセス権のを
[in, optional] lpSecurityAttributes
返されたハンドルを子プロセスによって継承できるかどうかを決定する SECURITY_ATTRIBUTES 構造体へのポインター。 lpSecurityAttributes
構造体の lpSecurityDescriptor メンバーは、新しいキーのセキュリティ記述子を指定します。 lpSecurityAttributes
[out] phkResult
開いているキーまたは作成されたキーへのハンドルを受け取る変数へのポインター。 キーが定義済みのレジストリ キーの 1 つでない場合は、ハンドルの使用が完了した後、RegCloseKey 関数を呼び出します。
[out, optional] lpdwDisposition
次のいずれかの処理値を受け取る変数へのポインター。
価値 | 意味 |
---|---|
|
キーが存在せず、作成されました。 |
|
キーは存在し、変更されずに単純に開かれました。 |
lpdwDisposition
戻り値
関数が成功した場合、戻り値はERROR_SUCCESS。
関数が失敗した場合、戻り値は Winerror.h で定義されている 0 以外のエラー コードです。 FormatMessage 関数を FORMAT_MESSAGE_FROM_SYSTEM フラグと共に使用すると、エラーの一般的な説明を取得できます。
備考
RegCreateKeyEx 関数が作成するキーには値がありません。 アプリケーションでは、RegSetValueEx 関数を使用してキー値を設定できます。
RegCreateKeyEx 関数は、指定したパスに不足しているすべてのキーを作成します。 アプリケーションでは、この動作を利用して、一度に複数のキーを作成できます。 たとえば、アプリケーションでは、lpSubKey パラメーターに次の形式の文字列を指定することで、前の 3 つのサブキーと同時に 4 つのレベルの深さのサブキーを作成できます。
subkey1\subkey2\subkey3\subkey4
パス内の既存のキーのスペルが正しくない場合、この動作によって不要なキーが作成されることに注意してください。
アプリケーションは、HKEY_USERS または HKEY_LOCAL_MACHINEの直接の子であるキーを作成できません。 アプリケーションは、HKEY_USERS または HKEY_LOCAL_MACHINE ツリーの下位レベルでサブキーを作成できます。
サービスまたはアプリケーションが異なるユーザーを偽装する場合は、この関数を HKEY_CURRENT_USERで使用しないでください。 代わりに、RegOpenCurrentUser 関数を呼び出します。
特定のレジストリ キーにアクセスする操作はリダイレクトされることに注意してください。 詳細については、「レジストリ仮想化
手記
winreg.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして RegCreateKeyEx を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされる最小サーバー | Windows 2000 Server [デスクトップ アプリのみ] |
ターゲット プラットフォーム の |
ウィンドウズ |
ヘッダー | winreg.h (Windows.h を含む) |
ライブラリ | Advapi32.lib |
DLL | Advapi32.dll |
関連項目
RegDeleteKey を
RegOpenKeyEx を
レジストリ関数 を