vc 開發 4 用CRegKey類來操作登錄檔

2021-04-14 19:28:57 字數 2810 閱讀 3893

如何用cregkey類來操作登錄檔

用cregkey類來操作登錄檔是非常方便的。cregkey類並不是乙個mfc類,而是乙個atl類,所以在使用的時候不要忘記在stdafx.h標頭檔案中加入#include 。

1.開啟需要查詢登錄檔鍵:

原型是:long open( hkey hkeyparent, lpctstr lpszkeyname, regsam samdesired = key_all_access );

只有開啟了乙個登錄檔鍵才能對其值進行操作。

hkeyparent:開啟的鍵的控制代碼。

lpszkeyname:鍵所在的登錄檔的路徑。

samdesired:登錄檔訪問的安全性。

例子:cregkey rk;

lpctstr lp="software//compupacific//newen//addins//addbutton";

if(rk.open(hkey_current_user,lp)== error_success)

2.獲取登錄檔中某一鍵的鍵值:

long queryvalue( dword& dwvalue, lpctstr lpszvaluename );

long queryvalue( lptstr szvalue, lpctstr lpszvaluename, dword* pdwcount );

有兩個函式,第乙個是查詢整型值,第二個是查詢字串型別的值。下面分別對它們進行舉例:

//取整型值

cregkey rk;

dword dvalue ;

lpctstr lp="software//compupacific//newen//addins//addbutton";

if(rk.open(hkey_current_user,lp)== error_success)

else

}else

rk.close();

//取字串型別的值

cregkey rk;

hkey m_hkey;

dword pcount=1024;

cstring keyvalue;

char szvalue[1024];

lpctstr lp="software//compupacific//newen//addins//addbutton";

if(rk.open(hkey_current_user,lp)== error_success)

else

//rk.setvalue(lkeyname,"hh");

}else

rk.close();

3.加入乙個鍵值:

long setvalue( dword dwvalue, lpctstr lpszvaluename );

long setvalue( lpctstr lpszvalue, lpctstr lpszvaluename = null );

long setvalue( hkey hkeyparent, lpctstr lpszkeyname, lpctstr lpszvalue, lpctstr lpszvaluename = null );

有三個過載函式,大同小異。我們針對第二個舉例,舉一反三:

long lresult = 0;

cregkey reg;

//open the required registry key

lpctstr lpszkey = "software//microsoft//internet explorer//*******";

lresult = reg.open(hkey_current_user,lpszkey);

//check if opened successfully

if(error_success != lresult)

//set the value

lresult = reg.setvalue(m_szfilepath,"backbitmap");

if(error_success != lresult)

//done, close and return success

reg.close();

m_szfilepath是一張的位置,通過這個函式,你的ie工具欄的背景就變成的你指定的了,很爽吧。

4. 刪除乙個鍵值:

long deletevalue( lpctstr lpszvalue );

lpszvalue:你要刪除的鍵值的名字.

例子:long lresult = 0;

cregkey reg;

//open the required registry key

lpctstr lpszkey = "software//microsoft//internet explorer//*******";

lresult = reg.open(hkey_current_user,lpszkey);

//check if opened successfully

if(error_success != lresult)

//delete the value "backbitmap" from *******

lresult = reg.deletevalue("backbitmap");

//check if deleted successfully

if(error_success != lresult)

//done, return success

reg.close();

這樣就去掉了你給ie工具欄設定的背景,也就是刪掉了ie工具欄的backbitmap鍵值。

一般來說最主要的操作就是這些了,是不是很簡單啊。

用VC 來設計ActiveX控制項

用vc 來設計activex控制項 派生類基類實現功能 colecontrolmodule 控制項例項的初始化和撤消 ctestctrl colecontrol 控制項視窗的建立 更新及訊息處理 ctestproppage colepropertypage 控制項屬性頁的設定及與實際屬性值的交換 編...

用VC 來設計ActiveX控制項

用vc 來設計activex控制項 周勇生 2001年07月05日 14 03 我們假定專案名為test。建立工作完成後,開啟workspace檔案test.dsw,可以看到系統生成的test控制項框架,主要的類及實現功能描述見下表 編譯此專案,生成test.ocx。在當前的developer st...

關於用vc來操作usb裝置

一直有點疑惑的地方是guid的值取向,之前一直通過裝置管理器去查詢對應的裝置所對應的裝置id,裝置guid,但是發現開啟usb裝置的時候返回false,具體函式 setupdienumdeviceinte ces 該函式一直返回false,後來網上查了下說是guid與裝置的guid對應不上,後面有個...