RegQueryValueEx函數使用

來源:互聯網
上載者:User

RegQueryValueEx找回所開啟註冊表鍵所關聯的一個給定值的類型和資料。 (適用於Win CE5.0)

LONG RegQueryValueEx(  HKEY hKey,           // 要查詢鍵的控制代碼  LPTSTR lpValueName,  // 要查詢值的名字的地址  LPDWORD lpReserved,  // 保留  LPDWORD lpType,      // 實值型別緩衝地址  LPBYTE lpData,       // 資料緩衝地址  LPDWORD lpcbData     // 資料緩衝大小地址); 
參數
hKey
一個當前已開啟鍵的控制代碼或下列已確定的保留控制代碼值:

HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
Windows NT:
HKEY_PERFORMANCE_DATA
Windows 95和Windows 98: HKEY_DYN_DATA

lpValueName
指向要查詢值的名字的字串(以Null 字元結束)。

如果lpValueName是NULL或一個Null 字元串(""),這個函數找回這個鍵的未命名或預設值的類型和資料。

Windows 95和Windows 98: 每個鍵有一個預設值(最初的不包含資料)。在Windows 95,這人預設值類型總是REG_SZ。在Windows 98,預設鍵的類型最初是REG_SZ,但可以通過RegSetValueEx指定一個預設值為不同的類型。

Windows NT: 鍵不能自動擁有一個未命名或預設的值,未命名的值可以是任何類型。

lpReserved
保留,必須是NULL.
lpType
指向與給定值相關聯資料的類型的變數。這個值將通過這個參數返回,將是下面之一:

值 含意
REG_BINARY 位元據。
REG_DWORD 一個32位元字。
REG_DWORD_LITTLE_ENDIAN 一個little-endian格式的32位元字。這相當於REG_DWORD。

little-endian格式,是一個多位元組值在記憶體中被從低位元組到高位元組存貯。如,值 0x12345678在little-endian格式中被存貯為(0x78 0x56 0x34 0x12)。

Windows NT, Windows 95,和Windows 98是有意運行在little-endian電腦體繫上的。例如像一些UNIX系統,一個使用者必須串連到big-endian體系的電腦上。

REG_DWORD_BIG_ENDIAN 一個big-endian格式的32位元字。

big-endian格式,一個多位元組值在記憶體職被從高位元組到低位元組存貯。如,值0x12345678在big-endian格式中被存貯為(0x12 0x34 0x56 0x78)。

REG_EXPAND_SZ 一個包含未被引用的環境變數的以Null 字元結束的字串(如,"%PATH%")。它是Unicode字串還是ANSI字串將依賴你所使用的是Unicode函數還是ANSI函數。擴充環境變數引用,使用ExpandEnvironmentStrings函數。
REG_LINK 一個Unicode符號串連。
REG_MULTI_SZ 一個以Null 字元結束的字串數組,被兩個null字元結束。
REG_NONE 未定義實值型別。
REG_RESOURCE_LIST 一個裝置驅動資源清單。
REG_SZ 一個以Null 字元結束的字串。它是 Unicode字串還是 ANSI字串將依賴你所使用的是 Unicode函數還是 ANSI函數。

如果不需要類型lpType參數可以為空白(NULL)。

lpData
指定接收值資料的緩衝區。如果資料是不需要的這個參數可以為空白。
lpcbData
以位元組為單位,指向lpData參數所指定地緩衝區大小的變數。函數返回複製到lpData的資料大小的變數。

如果資料是REG_SZ、REG_MULTI_SZ或REG_EXPAND_SZ類型,那麼lpcbData還將包括以Null 字元結束的大小。

如果lpData是NULL,lpcbData參數可以是NULL。

如果被lpData參數指定的緩衝不夠大,這個函數返回ERROR_MORE_DATA值,並取回被lpcbData指定的變數緩衝的大小(以位元組為單位)。

如果lpData是NULL,lpcbData不是NULL,這個函數返回ERROR_SUCCESS,並取回被lpcbData指定的變數緩衝的大小(以位元組為單位)。這個為值的資料緩衝分配最好的途徑。

Window NT: 如果hKey指定為HKEY_PERFORMANCE_DATA,並且lpData緩衝太小,RegQueryValueEx返回ERROR_MORE_DATA,但是lpcbData不能返回必需的緩衝大小。這是因為運用資料的大小可以在調用的下一步被改變。在這種情形下,你必須增加緩衝的大小並重新調用RegQueryValueEx通過lpcbData 參數更新緩衝大小。重複直到函數成功。 你需要維護一個單獨的變數去留意緩衝的大小。因為被lpcbData返回的值是可不預知的。

傳回值

如果這個函數成功,返回ERROR_SUCCESS。

如果調有失敗,返回一個非零錯誤碼(定義在WINERROR.H)。你可以使用帶有FORMAT_MESSAGE_FROM_SYSTEM標記的FormatMessage函數獲得錯誤的普通描述資訊。

注意

被hKey確定的鍵必須是被帶有KEY_QUERY_VALUE標記開啟的。開啟鍵,使用RegCreateKeyEx函數或RegOpenKeyEx函數。

如果值資料是REG_SZ、REG_MULTI_SZ或REG_EXPAND_SZ類型,這個函數的ANSI版本將被使用(明確的調用RegQueryValueExA或在包含WINDOWS.H檔案前不定義UNICODE),這個函數在複製它到lpData指定的緩衝中以前,轉換存貯地Unicode字串為ANSI字串。

Window NT: 當調用RegQueryValueEx函數並hKey被設定成HKEY_PERFORMANCE_DATA控制代碼,給定對象的值字串時,返回資料結構往往是未定義的對象。不要感到驚訝;這是正常的。當調RegQueryValueEx函數時,you should always expect to walk the returned data structure to look for the requested object.

快速資訊

  Windows NT: 需要3.1或更高版本。
  Windows: 需要Windows 95或更高版本。
  Windows CE: 需要1.0或更高版本。
  標頭檔: winreg.h。
  輸入庫: advapi32.lib。
  Unicode: 在Windows NT中作為Unicode或ANSI執行。

參見

Registry Overview, Registry Functions,ExpandEnvironmentStrings, RegCreateKeyEx, RegEnumKey, RegEnumKeyEx, RegEnumValue, RegOpenKeyEx, RegQueryInfoKey, RegQueryValue

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.