二。RegOpenKeyEx,以及RegCloseKey
先說一下RegOpenKeyEx,看字面的意思就知道是開啟一個鍵,由於RegCreateKeyEx也可以開啟一個鍵的,所以這個函數就有點那個了。不過這個函數比RegCreateKeyEx簡單n倍,所以還是很有用的了。它是這樣聲明的:
LONG RegOpenKey(HKEY hKey,LPCTSTR lpSubKey,PHKEY phkResult);
一看,這些參數是不是很熟悉了啊?hKey,lpSubKey,phkResult的意思和RegCreateKeyEx函數中這些參數的意思沒什麼兩樣了。這裡不多說了,到上一節去看看就知道了。傳回值還是老樣子,ERROR_SUCCESS就表示成功開啟了。
再來看看RegCloseKey,很簡單,只有一個參數:
LONG RegCloseKey(HKEY hKey) 就是關閉一個鍵了,關閉一個鍵以後,控制代碼就沒用了。我不知道關閉一個鍵了和不關有什麼不同,不過養成隨時關閉的習慣總是有好處的。傳回值?不用說,同上。
三。RegSetValueEx
RegSetValueEx,也就是已經知道一個鍵控制代碼了,對這個鍵的資料進行建立或改寫。就好象已經知道一個檔案夾,然後對其中的檔案改動。一看就知道很有用了。對一些系統的資料改動的話,可以產生很牛的效果!!!啊,真是振奮人心啊!!!不過不要亂改啊,把系統該壞了別找我啊。少說廢話了,看一下怎麼用的:
LONG RegSetValueEx(
HKEY hKey,
LPCTSTR lpSubKey,
DWORD Reserved,
DWORD dwType,
LPCTSTR lpData,
DWORD cbData
);
hKey:不用說了吧?
lpSubKey:字串,就是你要設定的資料項目的名字了,就好象檔案名稱那樣。
Reserved:沒用,必須是0。
dwType:資料的類型,有很多種,我只說兩種常用的了。REG_SZ和REG_DWORD,就是字串型和DWORD(unsigned long)型了。一般就是這兩種的。
lpData:就是你要設定的資料了,如果是字串的話,先要把首地址強制轉化成無符號型的指標,再傳過去。如果是整數的話,先取地址,再強制轉化成無符號型的字元指標,再串過去。
DWORD cbData:你要設定的資料的長度,如果是字串型的,則是strlen+1。如果是整數就是4了。傳回值同上。
還是舉個例吧:
#include<windows.h>
void main()
{
DWORD dwRes;
HKEY hk;
char szName[4]="我";
DWORD dwScore=100;
RegCreateKeyEx(HKEY_LOCAL_MACHINE,
"SOFTWARE//Carrier Studio//Hello",
0,
NULL,
REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS,
NULL,
&hk,
&dwRes
);
RegSetValueEx(hk,"Name",0,REG_SZ,(LPBYTE)szName,3);
RegSetValueEx(hk,"Score",0,REG_DWORD,(LPBYTE)dwScore,4);
RegCloseKey(hk);
}
好了,寫了這麼多累死我了,先休息一下。