共用方式為


RegEnumValueA 函式 (winreg.h)

列舉指定之開啟登錄機碼的值。 每次呼叫索引鍵時,函式都會複製索引鍵的一個索引值名稱和數據區塊。

語法

LSTATUS RegEnumValueA(
  [in]                HKEY    hKey,
  [in]                DWORD   dwIndex,
  [out]               LPSTR   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訪問許可權開啟。 如需詳細資訊,請參閱 登入機碼安全性和存取權限

此句柄是由 RegCreateKeyExRegCreateKeyTransactedRegOpenKeyExRegOpenKeyTransacted 函式所傳回。 它也可以是下列其中一個 預先定義的索引鍵

HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_PERFORMANCE_DATA
HKEY_USERS

[in] dwIndex

要擷取之值的索引。 第一次呼叫 RegEnumValue 函式時,此參數應該是零,然後針對後續呼叫遞增。

由於值未排序,因此任何新值都會有任意索引。 這表示函式可以依任何順序傳回值。

[out] lpValueName

緩衝區的指標,接收值名稱做為 null-terminated 字符串。

此緩衝區必須夠大,才能包含結束 null 字元。

如需詳細資訊,請參閱登錄專案大小限制。

[in, out] lpcchValueName

變數的指標,指定字元中 lpValueName 參數所指向的緩衝區大小。 當函式傳回時,變數會接收儲存在緩衝區中的字元數,不包括終止 null 字元。

如果 lpValueName 所指定的緩衝區 不夠大而無法保存數據,函式會傳回ERROR_MORE_DATA,且 lpValueName 所指向之變數中的緩衝區大小不會變更。 在此情況下,lpcchValueName 的內容是未定義的。

登錄值名稱限制為32,767個字節。 此函式的 ANSI 版本會將此參數視為 SHORT 值。 因此,如果您指定大於 32,767 個字節的值,就會有溢位,而且函式可能會傳回ERROR_MORE_DATA。

lpReserved

此參數是保留的,而且必須 NULL

[out, optional] lpType

接收程式代碼的變數指標,指出儲存在指定值中的數據類型。 如需可能的型別代碼清單,請參閱 登錄實值型別。 如果不需要類型程式代碼,lpType 參數可以 NULL

[out, optional] lpData

接收值專案之數據的緩衝區指標。 如果不需要數據,此參數可以 NULL

如果 lpDataNULL,且 l l 為非NULL,則函式會將數據大小以位元組為單位儲存 lusbData所指向的變數中。 這可讓應用程式判斷為數據配置緩衝區的最佳方式。

[in, out, optional] lpcbData

變數的指標,指定 lpData 參數所指向的緩衝區大小,以位元組為單位。 當函式傳回時,變數會接收儲存在緩衝區中的位元元組數目。

只有當 lpDataNULL時,這個參數才能 NULL

如果數據具有REG_SZ、REG_MULTI_SZ或REG_EXPAND_SZ類型,則此大小包含任何終止 null 字元或字元。 如需詳細資訊,請參閱。

如果 lpData 所指定的緩衝區 不足以保存數據,函式會傳回ERROR_MORE_DATA,並將所需的緩衝區大小儲存在 l所指向的變數中。 在此情況下,未定義 lpData 的內容。

傳回值

如果函式成功,則傳回值會ERROR_SUCCESS。

如果函式失敗,傳回值是 系統錯誤碼。 如果沒有可用的值,函式會傳回ERROR_NO_MORE_ITEMS。

如果 lpValueName 所指定的緩衝區lpData 太小而無法接收值,則函式會傳回ERROR_MORE_DATA。

言論

若要列舉值,應用程式應該一開始呼叫 RegEnumValue 函式,並將 dwIndex 參數設定為零。 然後,應用程式應該遞增 dwIndex,並呼叫 RegEnumValue 函式,直到沒有其他值(直到函式傳回ERROR_NO_MORE_ITEMS為止)。

應用程式也可以將 dwIndex 設定為函式第一次呼叫時最後一個值的索引,並遞減索引,直到列舉索引 0 的值為止。 若要擷取最後一個值的索引,請使用 RegQueryInfoKey 函式。

使用 RegEnumValue時,應用程式不應該呼叫任何可能變更查詢密鑰的登錄函式。

如果數據具有REG_SZ、REG_MULTI_SZ或REG_EXPAND_SZ類型,字串可能尚未以適當的 null終止字元儲存。 因此,即使函式傳回ERROR_SUCCESS,應用程式也應該確保字串在使用之前已正確終止;否則,它可能會覆寫緩衝區。 (請注意,REG_MULTI_SZ字串應該有兩個 null-terminating 字元。

若要判斷名稱和數據緩衝區的大小上限,請使用 RegQueryInfoKey 函式。

注意

在舊版 Windows 上,此 API 也會由 kernel32.dll公開。

例子

如需範例,請參閱 列舉登錄子機碼

注意

winreg.h 標頭會將 RegEnumValue 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的 慣例。

要求

要求 價值
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
支援的最低伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平臺 窗戶
標頭 winreg.h (包括 Windows.h)
連結庫 Advapi32.lib
DLL Advapi32.dll

另請參閱

RegCreateKeyEx

RegEnumKeyEx

RegOpenKeyEx

RegQueryInfoKey

登錄函式

登錄概觀