次の方法で共有


RegEnumValueW 関数 (winreg.h)

指定した開いているレジストリ キーの値を列挙します。 この関数は、キーが呼び出されるたびに、インデックス付き値の名前とデータ ブロックを 1 つコピーします。

構文

LSTATUS RegEnumValueW(
  [in]                HKEY    hKey,
  [in]                DWORD   dwIndex,
  [out]               LPWSTR  lpValueName,
  [in, out]           LPDWORD lpcchValueName,
                      LPDWORD lpReserved,
  [out, optional]     LPDWORD lpType,
  [out, optional]     LPBYTE  lpData,
  [in, out, optional] LPDWORD lpcbData
);

パラメーター

[in] hKey

開いているレジストリ キーへのハンドル。 キーは、KEY_QUERY_VALUEアクセス権で開かれている必要があります。 詳細については、「レジストリ キーのセキュリティとアクセス権のを する」を参照してください。

このハンドルは、RegCreateKeyEx、RegCreateKeyTransacted、RegOpenKeyEx、または RegOpenKeyTransacted 関数 返されます。 また、次のいずれかの定義済みキー することもできます。

HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_PERFORMANCE_DATA
HKEY_USERS

[in] dwIndex

取得する値のインデックス。 このパラメーターは、RegEnumValue 関数の最初の呼び出しでは 0 にし、その後の呼び出しではインクリメントする必要があります。

値は順序付けされないため、新しい値には任意のインデックスが付けられます。 これは、関数が任意の順序で値を返す可能性があることを意味します。

[out] lpValueName

null-terminated 文字列として値の名前を受け取るバッファーへのポインター。

このバッファーは、終端 null 文字を含めるのに十分な大きさにする必要があります。

詳細については、「レジストリ要素のサイズ制限」を参照してください。

[in, out] lpcchValueName

lpValueName パラメーターが指すバッファーのサイズを文字で指定する変数へのポインター。 関数から制御が戻ると、変数はバッファーに格納されている文字数を受け取ります。null 文字の終端 含まれません。

レジストリ値の名前は 32,767 バイトに制限されています。 この関数の ANSI バージョンでは、このパラメーターは SHORT 値として扱われます。 したがって、32,767 バイトを超える値を指定すると、オーバーフローが発生し、関数はERROR_MORE_DATA返す可能性があります。

lpReserved

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

[out, optional] lpType

指定した値に格納されているデータの型を示すコードを受け取る変数へのポインター。 使用可能な型コードの一覧については、「レジストリ値の型参照してください。 lpType パラメーターは、型コードが不要な場合に NULL できます。

[out, optional] lpData

値エントリのデータを受け取るバッファーへのポインター。 データが不要な場合、このパラメーターは NULL できます。

lpData が NULL 、lpcbData が非NULLの場合、関数はデータのサイズをバイト単位で lpcbData指す変数に格納します。 これにより、アプリケーションはデータにバッファーを割り当てる最適な方法を決定できます。

[in, out, optional] lpcbData

lpData パラメーターが指すバッファーのサイズをバイト単位で指定する変数へのポインター。 関数から制御が戻ると、変数はバッファーに格納されているバイト数を受け取ります。

このパラメーターは、lpData が NULL場合にのみ、NULL できます。

データにREG_SZ、REG_MULTI_SZ、またはREG_EXPAND_SZの型がある場合、このサイズには、null 文字または文字 終端が含まれます。 詳細については、「解説」を参照してください。

lpData で指定されたバッファーがデータを保持するのに十分な大きさでない場合、関数はERROR_MORE_DATAを返し、必要なバッファー サイズ lpcbDataが指す変数に格納します。 この場合、lpData の内容は未定義です。

戻り値

関数が成功した場合、戻り値はERROR_SUCCESS。

関数が失敗した場合、戻り値はシステム エラー コードです。 使用可能な値がそれ以上ない場合、関数はERROR_NO_MORE_ITEMSを返します。

lpData バッファーが小さすぎて値を受け取れなければ、関数はERROR_MORE_DATAを返します。

備考

値を列挙するには、dwIndex パラメーターを 0 に設定して、最初に RegEnumValue 関数を呼び出す必要があります。 その後、アプリケーションは dwIndex インクリメントし、RegEnumValue 関数を呼び出し、値がなくなった (関数がERROR_NO_MORE_ITEMSを返すまで) 必要があります。

アプリケーションでは、dwIndex 関数の最初の呼び出しで最後の値のインデックスを設定し、インデックス 0 の値が列挙されるまでインデックスをデクリメントすることもできます。 最後の値のインデックスを取得するには、RegQueryInfoKey 関数を使用します。

RegEnumValueを使用している場合、アプリケーションはクエリ対象のキーを変更する可能性のあるレジストリ関数を呼び出さないでください。

データにREG_SZ、REG_MULTI_SZ、またはREG_EXPAND_SZの型がある場合、文字列が適切な null-terminating 文字で格納されていない可能性があります。 したがって、関数がERROR_SUCCESSを返した場合でも、アプリケーションは文字列を使用する前に適切に終了するようにする必要があります。それ以外の場合は、バッファーを上書きする可能性があります。 (REG_MULTI_SZ文字列には、2 つの null-terminating 文字が含まれる必要があることに注意してください)。

名前バッファーとデータ バッファーの最大サイズを確認するには、RegQueryInfoKey 関数を使用します。

例については、「レジストリ サブキーの列挙」を参照してください。

手記

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

必要条件

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

関連項目

RegCreateKeyEx の

RegEnumKeyEx を する

RegOpenKeyEx を する

RegQueryInfoKey の

レジストリ関数 を する

レジストリの概要