成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

網絡安全編程:注冊表操作常用API函數

安全
注冊表的操作和文件的操作非常類似,也存在打開、關閉、寫入、查詢等操作,也就是“增、刪、改、查”的功能都具備,只是所使用的API函數都是以Reg開頭的。

[[381806]]

 注冊表的操作和文件的操作非常類似,也存在打開、關閉、寫入、查詢等操作,也就是“增、刪、改、查”的功能都具備,只是所使用的API函數都是以Reg開頭的。

1. 打開和關閉注冊表

操作注冊表需要通過可以操作注冊表的句柄,與文件操作類似。對注冊表進行讀寫前,需要通過API函數打開注冊表,并返回用于操作注冊表的句柄,通過操作注冊表的API函數來打開返回的句柄,然后對注冊表進行讀寫操作。當讀寫操作完成后,再通過API函數將打開的注冊表句柄進行關閉。

打開注冊表使用的函數是RegOpenKeyEx()。在Win16下有一個函數名為RegOpenKey(),雖然這個函數在Win32下仍然可用,但是這是為了兼容目的而設置的。RegOpenKeyEx()函數的定義如下: 

  1. LONG RegOpenKeyEx(  
  2.  HKEY hKey, // handle to open key  
  3.  LPCTSTR lpSubKey, // subkey name  
  4.  DWORD ulOptions, // reserved  
  5.  REGSAM samDesired, // security access mask  
  6.  PHKEY phkResult // handle to open key  
  7. ); 

參數說明如下。

hKey:指定一個父鍵句柄。

lpSubKey:指向一個字符串,用來表示要打開的子鍵名稱。

ulOptions:系統保留,必須指定為 0 值。

samDesired:打開注冊表的存取權限,為了方便對注冊表的操作,通常使用 KEY_ALL_ACCESS 即可。

phkResult:指向一個雙子變量,用來接收打開的子鍵句柄。

如果函數執行成功,則返回 ERROR_SUCCESS,并且在 phkResult 中保存返回打開子鍵的句柄。

所謂打開注冊表,實質是打開注冊表的某一個子鍵,然后進行操作。

當對注冊表操作完成后,則需要關閉已打開的注冊表句柄以便釋放資源。關閉釋放注冊表句柄的函數定義如下: 

  1. LONG RegCloseKey(  
  2.  HKEY hKey // handle to key to close  
  3. ); 

該函數只有一個參數,是RegOpenKeyEx()函數的最后一個參數,即被打開的注冊表句柄。

2. 創建和刪除子鍵

創建一個子鍵的API函數為RegCreateKeyEx(),其定義如下: 

  1. LONG RegCreateKeyEx(  
  2.  HKEY hKey, // handle to open key  
  3.  LPCTSTR lpSubKey, // subkey name  
  4.  DWORD Reserved, // reserved  
  5.  LPTSTR lpClass, // class string  
  6.  DWORD dwOptions, // special options  
  7.  REGSAM samDesired, // desired security access  
  8.  LPSECURITY_ATTRIBUTES lpSecurityAttributes, // inheritance  
  9.  PHKEY phkResult, // key handle  
  10.  LPDWORD lpdwDisposition // disposition value buffer  
  11. ); 

參數說明如下。

hKey:用來指定父鍵句柄。

lpSubKey:指向一個字符串,用來表示要創建的子鍵名稱。

Reserved:系統保留,必須指定為 0 值。

lpClass:子鍵類名,一般設置為 NULL 值。

dwOptions:創建子鍵時的選項,通常情況下使用 REG_OPTION_NON_VOLATILE宏,表示創建的子鍵被創建到注冊表文件中,而不是內存中。

samDesired:打開注冊表的存取權限,為了方便對注冊表的操作,通常使用 KEY_ALL_ ACCESS 即可。

lpSecurityAttributes:該參數指向一個 SECURITY_ATTRIBUTES 結構體,用來指定鍵句柄的安全屬性,這里一般使用 NULL。

phkResult:指向一個雙子變量,用來接收打開的子鍵句柄。

lpdwDisposition:一般設置為 NULL 值。

如果函數執行成功,則返回ERROR_SUCCESS,并且在phkResult中保存返回創建子鍵的句柄。當需要創建的子鍵已經存在的時候,該函數起到與RegOpenKeyEx()函數同樣的作用,那么打開注冊表也可以使用RegCreateKeyEx()函數進行代替。不過該函數的參數比RegOpenKeyEx()函數的參數多。因此為了在寫代碼時更簡便,打開注冊表的操作還是使用RegOpenKeyEx()函數較為省事。

刪除子鍵使用RegDeleteKey()函數,其定義如下: 

  1. LONG RegDeleteKey(  
  2.  HKEY hKey, // handle to open key  
  3.  LPCTSTR lpSubKey // subkey name  
  4. ); 

該函數的值能用來刪除鍵值項,也就是函數只能刪除最下一層的子鍵。函數有2個參數,hKey為父鍵句柄,lpSubKey為指向要刪除的子鍵名稱字符串。

3. 注冊表鍵值的查詢、寫入與刪除

讀取鍵名稱中的數據或者查詢鍵名稱的屬性使用RegQueryValueEx()函數,其定義如下: 

  1. LONG RegQueryValueEx(  
  2.  HKEY hKey, // handle to key  
  3.  LPCTSTR lpValueName, // value name  
  4.  LPDWORD lpReserved, // reserved  
  5.  LPDWORD lpType, // type buffer  
  6.  LPBYTE lpData, // data buffer  
  7.  LPDWORD lpcbData // size of data buffer  
  8. ); 

參數說明如下。

hKey:用來指定要讀取的鍵值項所處的子鍵句柄。

lpValueName:用來指定要讀取的鍵值項的名稱。

lpReserved:保留參數,必須為 NULL 值。

lpType:接收返回的鍵值類型,如果不需要返回鍵值項類型,可以給 NULL 值。

lpData:指向一個緩沖區,用來接收返回的鍵值數據。

lpcbData:在調用該函數時,這個參數用來指定緩沖區的長度;當函數返回時,該變量保存緩沖區實際接收到的長度。

寫入鍵值項的函數為 RegSetValueEx(),其定義如下: 

  1. LONG RegSetValueEx(  
  2.  HKEY hKey, // handle to key  
  3.  LPCTSTR lpValueName, // value name  
  4.  DWORD Reserved, // reserved  
  5.  DWORD dwType, // value type  
  6.  CONST BYTE *lpData, // value data  
  7.  DWORD cbData // size of value data  
  8. ); 

參數說明如下。

hKey:用來指定要寫入的鍵值項所處的子鍵句柄。

lpValueName:指向定義鍵值項名稱的字符串。

Reserved:保留參數,必須為 0 值。

dwType:指出要寫入的鍵值數據的類型。

lpData:指向要寫入鍵值數據的緩沖區。

cbData:要寫入鍵值數據的緩沖區長度。

刪除鍵值項的函數為RegDeleteValue(),其定義如下: 

  1. LONG RegDeleteValue(  
  2.  HKEY hKey, // handle to key  
  3.  LPCTSTR lpValueName // value name  
  4. ); 

參數說明如下。

hKey:用來指定刪除的句柄。

lpValueName:被刪除鍵值項的名稱。

4. 子鍵和鍵值的枚舉

枚舉就是逐一獲取。子鍵的枚舉對指定鍵下面的子鍵進行逐一的獲取。鍵值的枚舉是對指定子鍵下的鍵值進行逐一的獲取。

枚舉子鍵的函數為RegEnumKeyEx(),其定義如下: 

  1. LONG RegEnumKeyEx(  
  2.  HKEY hKey, // handle to key to enumerate  
  3.  DWORD dwIndex, // subkey index  
  4.  LPTSTR lpName, // subkey name  
  5.  LPDWORD lpcName, // size of subkey buffer  
  6.  LPDWORD lpReserved, // reserved  
  7.  LPTSTR lpClass, // class string buffer  
  8.  LPDWORD lpcClass, // size of class string buffer  
  9.  PFILETIME lpftLastWriteTime // last write time  
  10. ); 

參數說明如下。

hKey:指定被枚舉的鍵句柄。

dwIndex:指定需要返回信息的子鍵索引編號。

lpName:用戶接收返回子鍵名稱的緩沖區。

lpcName:在調用該函數前,該參數保存 lpName 指向緩沖區的長度;在該函數調用完成后,該參數保存緩沖區實際接收到的數據的長度。

lpReserved:保留參數,必須為 NULL 值。

lpClass:一般為 NULL 值。

lpcClass:一般為 NULL 值。

lpftLastWriteTime:指向一個 FILETIME 結構體,用于接收最后一次被寫入的時間。

枚舉鍵值的函數為RegEnumValue(),其定義如下: 

  1. LONG RegEnumValue(  
  2.  HKEY hKey, // handle to key to query  
  3.  DWORD dwIndex, // index of value to query  
  4.  LPTSTR lpValueName, // value buffer  
  5.  LPDWORD lpcValueName, // size of value buffer  
  6.  LPDWORD lpReserved, // reserved  
  7.  LPDWORD lpType, // type buffer  
  8.  LPBYTE lpData, // data buffer  
  9.  LPDWORD lpcbData // size of data buffer  
  10. ); 

參數說明如下。

hKey:指定被枚舉的鍵句柄。

dwIndex:指定需要返回信息的鍵值索引編號。

lpValueName:用戶接收返回鍵值名稱的緩沖區。

lpcValueName:在調用該函數前,該參數保存 lpValueName 指向緩沖區的長度;在該函數調用完成后,該參數保存緩沖區實際接收到的數據的長度。

lpReserved:保留參數,必須為 NULL 值。

lpType:指向一個用于返回鍵值數據類型的雙字變量。

lpData:用戶接收返回鍵值數據的緩沖區。

lpcbData:在調用該函數前,該參數保存 lpData 指向緩沖區的長度;在該函數調用完成后,該參數保存緩沖區實際收到的數據的長度。

與注冊表操作相關的函數就介紹到這里。以上是注冊表操作的常用函數,這里無法將注冊表操作相關的函數一一介紹,其他相關函數在具體使用時請參考 MSDN 進行學習。 

 

責任編輯:龐桂玉 來源: 計算機與網絡安全
相關推薦

2021-02-07 10:55:01

網絡安全文件API

2021-02-18 14:40:38

網絡安全注冊表代碼

2009-08-19 14:01:49

C#中操作注冊

2021-05-08 11:50:59

網絡安全API函數代碼

2009-08-19 14:40:57

C#操作注冊表常用方法

2021-05-24 11:55:55

網絡安全Windows鉤子函數

2021-03-03 12:20:42

網絡安全DLL編程

2021-05-14 12:10:19

網絡安全KeyMake注冊機

2021-03-05 13:46:56

網絡安全遠程線程

2021-01-26 13:45:03

網絡安全Winsock編程

2009-08-19 13:30:58

C#操作注冊表

2009-08-19 13:34:55

C#操作注冊表

2009-08-19 13:25:53

C#操作注冊表

2011-08-04 16:37:09

注冊表編輯器注冊表

2021-03-19 10:23:45

網絡安全內核文件

2021-04-14 15:53:58

網絡安全C語言wcslen

2021-02-21 18:19:43

網絡安全網絡安全編程創建進程

2021-02-23 10:20:07

網絡安全進程代碼

2009-08-19 14:12:23

C#操作注冊表

2009-08-31 14:45:13

C#注冊表
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 两性午夜视频 | 中文字幕综合 | 日韩中文一区二区三区 | 欧美视频一区二区三区 | 日韩精品一区二区三区 | 国产伊人精品 | 日本一区二区高清不卡 | 成年人黄色一级片 | 国产精品久久久99 | 国产精品久久久久久亚洲调教 | 欧美一级久久久猛烈a大片 日韩av免费在线观看 | 日韩一区二区三区在线视频 | 国产精品久久久久久久岛一牛影视 | 亚洲天堂中文字幕 | 国产精品久久久久久久久久久久久 | 精品视频一区二区在线观看 | 一区在线播放 | 青青草网站在线观看 | 日韩精品中文字幕在线 | 欧美视频一区二区三区 | 国产色视频网站 | 久久精品二区 | 毛片免费观看视频 | 国产一区二区三区四区三区四 | 精品欧美一区二区三区久久久小说 | 久久草在线视频 | 欧美成视频在线观看 | 色综合av | 操夜夜| 日本亚洲欧美 | 最新黄色毛片 | 亚洲永久字幕 | 久久久久久久91 | 99在线免费观看视频 | 中文字幕高清 | 日韩久久精品 | 91在线观| 国产丝袜一区二区三区免费视频 | 午夜久草 | 欧美成人自拍视频 | 中文字幕亚洲欧美日韩在线不卡 |