程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> Win32 API 常用函數之三——注冊表操作(上)

Win32 API 常用函數之三——注冊表操作(上)

編輯:.NET實例教程

【注冊表操作】

RegOpenKeyEx



LONG RegOpenKeyEx(
  HKEY hKey,
  LPCTSTR lpSubKey,
  DWord ulOptions,
  REGSAM samDesired,
  PHKEY phkResult
);

打開一個指定的注冊表項,值得注意的是注冊表的鍵值是不區分大小寫的。
第一個參數是主鍵,可以是預定義的鍵值,如HKEY_CLASSES_ROOT、HKEY_CURRENT_USER、HKEY_LOCAL_MacHINE、HKEY_USERS 這幾個。
第二個參數是子鍵,指向一個字符串。當這個字符串為空或這指針為NULL時,他會打開hKey的值。
第三個參數保留。
第四個參數是一種權限,如常用的查詢權限KEY_QUERY_VALUE,用於創建子鍵的KEY_CREATE_SUB_KEY,用於寫的權限KEY_SET_VALUE等。
第五個參數是一個句柄,就像CreateEvent一樣,返回了一個打開的注冊表鍵,用完了就用它來關閉。
返回值表示成功或失敗,成功則ERROR_SUCCESS,其他則表示出了些問題,在Winerror.h中定義。

 RegCloseKey



LONG RegCloseKey(
  HKEY hKey
);

用於關閉已經打開(RegOpenKeyEx)的或者創建出來(RegCreateKeyEx)的注冊表鍵值的句柄。
這個操作類似closeHandle。

RegCreateKeyEx



LONG RegCreateKeyEx(
  HKEY hKey,
  LPCTSTR lpSubKey,
  DWord Reserved,
  LPTSTR lpClass,
  DWord dwOptions,
  REGSAM samDesired,
  LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  PHKEY phkResult,
  LPDWord lpdwDisposition
);

創建一個注冊表鍵值,如果該值已存在,則類似Open的行為。
第一個參數與RegOpenKeyEx相似。
第二個參數是要創建的子鍵的字符串。該值不可以為NULL,也不可以含有反斜線\,而且是不區分大小寫的。
第三個參數保留。傳入0即可。
第四個參數通常設置為NULL。
第五個參數默認設置為REG_OPTION_NON_VOLATILE,另外兩個值REG_OPTION_BACKUP_RESTORE和REG_OPTION_VOLATILE有特殊的含義,詳細信息見MSDN。
第六個參數與RegOpenKeyEx的相應參數含義一樣。通常創建一個子鍵的行為需要Create權限,因為這個函數需要創建子鍵,但是他並不能設置這個子鍵的值,需要別的函數幫助。
第七個參數是安全級別,傳入NULL為默認級別。
第八個參數是hanle。用於之後的操作。
第九個參數是一個傳出參數,它標示了調用該函數是新建了一個子鍵REG_CREATED_NEW_KEY還是打開了一個原有子鍵REG_OPENED_EXISTING_KEY。
返回值同樣是ERROR_SUCCESS表示成功,其他則表示有問題。


RegSetValueEx



LONG RegSetValueEx(
  HKEY hKey,
  LPCTSTR lpValueName,
  DWord Reserved,
  DWord dwType,
  const BYTE* lpData,
  DWord cbData
);

創建了子鍵,需要給它賦以特定的值,該函數就是為子鍵賦值的。
第一個參數是目標鍵的handle。
第二個參數是值名稱。NULL、空字符串都會導致一個匿名屬性。
第三個參數保留。
第四個參數表示值的類型,常用的有二進制REG_BINARY、DWORD類型REG_DWord、字符串REG_EXPAND_SZ等。
第五個參數是值內容。
第六個參數是值內容的大小,sizeof即可,不過當是字符串的時候,記得加1,來表示結尾符。

RegQueryValueEx



LONG RegQueryValueEx(
  HKEY hKey,
  LPCTSTR lpValueName,
  LPDWord lpReserved,
LPDWord lpType,
  LPBYTE lpData,
  LPDWord lpcbData
);

我們要讀一個已經打開的鍵的值的時候,就需要這個函數。
第一個參數是目標鍵的handle。
第二個參數是值名稱。
第三個參數保留。
第四個參數是值類型,同RegSetValueEx的類型含義相同。但是他是傳出的,這時就有一個小技巧,當我們不知道一個鍵的值類型時,我們可以用這個參數第一次讀出值的類型,後兩個參數傳入NULL和大小,這時讀出了值的類型和值的大小,這樣在第二次想確切的讀出值的內容的時候,就可以分配恰好可用的空間。
第五個參數是傳出參數,用於讀出的數據。
第六個參數是傳出參數的大小。

to be continued~

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved