開始read/write前,你需要先create/open Registry以取得Registry Key Handler;結束前,則必須要將這個Handler close掉。
1. RegCreateKeyEx/RegOpenKeyEx
以上列這兩種method來打開Registry。不同點在於,RegCreateKeyEx在指定的路徑找不到Registry會幫你Create,找到則Open;RegOpenKeyEx則只能夠幫你Open。
你需要指定Root (HKEY_CLASSES_ROOT, HKEY_CURRENT_CONFIG, HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE, HKEY_USERS),Subkey(路徑),Access Right,和丟一個Registry Key Handler的pointer給他,以便取得此Handler。
HKEY hkey;而dwOptions則可以在Create一個Registry時,控制他的LifeCycle。REG_OPTION_NON_VOLATILE - default value. Registry在system shutdown後仍存在。
DWORD dwDisp = 0;
HRESULT hr = RegCreateKeyEx(HKEY_CURRENT_USER, _T("Software\\Test"), 0, NULL, REG_OPTION_VOLATILE, KEY_ALL_ACCESS, NULL, &hkey, &dwDisp);
if (ERROR_SUCCESS == hr)
{
...
}
REG_OPTION_VOLATILE - Registry在system shutdown後消失。
2. RegQueryValueEx()
以此取得資料。將剛剛取得的HKEY都進去,指定你想要知道的Value Name和一個用來放資料的Buffer和他的長度即可。
BYTE buf[256];
memset(buf, 0, 256);
DWORD dwtype, Size = 256;
HRESULT hr = RegQueryValueEx(hkey, _T("MyValueName"), NULL, &dwtype, (LPBYTE)buf, &Size);
if (ERROR_SUCCESS == hr)
{
...
}
3. RegSetValueEx()
以此設定資料。使用方法同上,只是這次丟進去的指標指向你所要設定的資料。
CString strValue = _T("Test");
RegSetValueEx(hkey, _T("MyValueName"), 0, REG_SZ,
(LPBYTE)(LPCTSTR)strValue , strValue .GetLength());
4. RegCloseKey()
以此關閉Registry Handler。將HKEY丟進去即可。
RegCloseKey(hkey);
張貼留言
注意:只有此網誌的成員可以留言。