日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

用VC++修改注册表----让我们踏出第一步(适合初学者)

發(fā)布時(shí)間:2023/12/4 c/c++ 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用VC++修改注册表----让我们踏出第一步(适合初学者) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
用VC++修改注冊(cè)表----讓我們踏出第一步(適合初學(xué)者)
轉(zhuǎn)載自:www.csdn.net
??開場(chǎng)白

???????你是不是非常期待通過自己的雙手,寫出一個(gè)有模有樣的"系統(tǒng)修改(維護(hù))工具軟件"?我想答案應(yīng)該是肯定的!而你也許也知道,這些工具所包含的很多功能,其實(shí)都是仰賴Windows注冊(cè)表;通過修改注冊(cè)表可以實(shí)現(xiàn)對(duì)系統(tǒng)相關(guān)參數(shù)的修改.也許這樣講來,你還是覺得不著邊際,好,不要急,讓我以這篇文章,告訴你一些你必須知道的事情,在你能夠真正動(dòng)手修改注冊(cè)表之前.我假定這篇文章的讀者是初學(xué)者,我盡量用最簡(jiǎn)單的筆調(diào)來講述如何修改注冊(cè)表,為的是使你即刻明白如何做,我絕不會(huì)故弄玄虛。但當(dāng)然,你必須對(duì)Windows操作系統(tǒng)有一定認(rèn)知,并具備基本的VC
++編程基礎(chǔ)(如果不是這樣,建議你就此打住,不要再往下看了--我不想浪費(fèi)你的時(shí)間).

注冊(cè)表到底是什么東西?

?

????注冊(cè)表到底是什么東西?也許它經(jīng)常在你的口頭出現(xiàn),但我現(xiàn)在要你即刻講出來它到底是什么東西,有些什么用,如何產(chǎn)生作用?你能嗎?如果不能,請(qǐng)耐心看完這部分;否則,請(qǐng)?zhí)^之。

????????Windows的注冊(cè)表包含了Windows的系統(tǒng)配置、PC機(jī)的硬件配置、Win32應(yīng)用程序和用戶的其他設(shè)置信息。注冊(cè)表和INI文件不同,它是多層次的樹狀數(shù)據(jù)結(jié)構(gòu),具有六個(gè)分支(根鍵),每個(gè)分支又由許多的鍵和鍵值組成,而每個(gè)鍵則代表一個(gè)特定的配置項(xiàng)目。最直觀的一個(gè)實(shí)例就是,為什么Windows下的不同用戶可以擁有各自的個(gè)性化設(shè)置,如不同的墻紙,不同的桌面。這就是通過注冊(cè)表來實(shí)現(xiàn)的。

你必須清楚的幾個(gè)詞:

主鍵:(在NT下又稱為項(xiàng))你可以認(rèn)為這是整個(gè)注冊(cè)表結(jié)構(gòu)中的一層,有點(diǎn)兒類似于資源管理器中的目錄樹結(jié)構(gòu)。所以它的圖標(biāo)與文件夾的圖標(biāo)有點(diǎn)兒想像

字符串值:顧名思義,一串ASCII碼字符。

二進(jìn)制值:這沒啥多說的,0101是也!

實(shí)例要出場(chǎng)了!

???????你如何知道要實(shí)現(xiàn)你想要的功能必須經(jīng)由修改注冊(cè)表的哪一項(xiàng)來做到呢?哦,市面有一大堆的"羅列"注冊(cè)表各項(xiàng)的書(其實(shí)是手冊(cè)),隨便去挑一本吧,我保證你掏得起這個(gè)腰包.

???????實(shí)際編程的過程中你會(huì)遇到兩個(gè)問題:一個(gè)是如何訪問(讀取)注冊(cè)表,另一個(gè)是如何修改注冊(cè)表,而往往最吸引人的恐怕是后者.讓我們用實(shí)例來說話!

  假設(shè)你現(xiàn)在要實(shí)現(xiàn)的編程任務(wù)是,從注冊(cè)表獲知本機(jī)的用戶名,以及公司名稱。然后,將它們改成你想要指定的名稱。

在Visual?C
++?6.0中新建一基于對(duì)話框的工程,設(shè)置兩個(gè)命令按鈕,名為“Inquire”和“Modify”,分別用來查詢和修改。

說明:用戶的信息位于系統(tǒng)注冊(cè)表中?\HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\?的位置,鍵值名RegisteredOwner和RegisteredOrganization分別表示用戶的姓名和用戶公司的名稱。你絕對(duì)可以從那些“注冊(cè)表手冊(cè)”中查到。

1.查詢用戶信息的代碼?
HKEY?hKEY;?
//定義有關(guān)的?hKEY,?在查詢結(jié)束時(shí)要關(guān)閉。?
LPCTSTR?data_Set="Software\\Microsoft\\Windows\\CurrentVersion\\";?
//打開與路徑?data_Set?相關(guān)的?hKEY,第一個(gè)參數(shù)為根鍵名稱,第二個(gè)參數(shù)表。?
//表示要訪問的鍵的位置,第三個(gè)參數(shù)必須為0,KEY_READ表示以查詢的方式。?
//訪問注冊(cè)表,hKEY則保存此函數(shù)所打開的鍵的句柄。?
long?ret0=(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,data_Set,?0,?KEY_READ,?&hKEY));?
if(ret0!=ERROR_SUCCESS)?//如果無法打開hKEY,則終止程序的執(zhí)行?
{MessageBox("錯(cuò)誤:?無法打開有關(guān)的hKEY!");?
return;}?
//查詢有關(guān)的數(shù)據(jù)?(用戶姓名?owner_Get)。?
LPBYTE?owner_Get=new?BYTE[80];?
DWORD?type_1
=REG_SZ?;?DWORD?cbData_1=80;??
//hKEY為剛才RegOpenKeyEx()函數(shù)所打開的鍵的句柄,"RegisteredOwner"。?
//表示要查?詢的鍵值名,type_1表示查詢數(shù)據(jù)的類型,owner_Get保存所。?
//查詢的數(shù)據(jù),cbData_1表示預(yù)設(shè)置的數(shù)據(jù)長(zhǎng)度。?
long?ret1=::RegQueryValueEx(hKEY,?"RegisteredOwner",?NULL,?
&type_1,?owner_Get,?&cbData_1);?
if(ret1!=ERROR_SUCCESS)?
{?
MessageBox(
"錯(cuò)誤:?無法查詢有關(guān)注冊(cè)表信息!");?
return;?
}?
//?查詢有關(guān)的數(shù)據(jù)?(公司名?company_Get)?
LPBYTE?company_Get=new?BYTE?[80];?
DWORD?type_2
=REG_SZ;?DWORD?cbData_2=80;??
long?ret2=::RegQueryValueEx(hKEY,?"RegisteredOrganization",?NULL,&type_2,company_Get,?&cbData_2);?
if(ret2!=ERROR_SUCCESS)?
{?
MessageBox(
"錯(cuò)誤:?無法查詢有關(guān)注冊(cè)表信息!");?
return;?
}?
//?將?owner_Get?和?company_Get?轉(zhuǎn)換為?CString?字符串,?以便顯示輸出。?
CString?str_owner=CString(owner_Get);?
CString?str_company
=CString(company_Get);?
delete[]?owner_Get;?delete[]?company_Get;?
//?程序結(jié)束前要關(guān)閉已經(jīng)打開的?hKEY。?
::RegCloseKey(hKEY);?
……?
這樣,上述程序執(zhí)行完畢,字符串str_owner和str_company則表示查詢到的用戶的姓名和公司的名稱,在VC
++中便可用對(duì)話框的方式將其顯示出來。?
2.修改用戶信息的代碼?
注意和上述的查詢代碼屬于不同的函數(shù)體。?
在程序中我們先顯示一個(gè)對(duì)話框,要求用戶輸入新的用戶姓名和公司名稱并按確認(rèn)鍵,將取得CString類型的有關(guān)字符串。要先將其轉(zhuǎn)換為L(zhǎng)PBYTE(即unsigned?
char*)型的數(shù)據(jù)類型,以便后面的函數(shù)調(diào)用。下面是程序中用到的將CString型轉(zhuǎn)換為L(zhǎng)PBYTE的轉(zhuǎn)換函數(shù):?
LPBYTE?CString_To_LPBYTE(CString?str)?
{?
LPBYTE?lpb
=new?BYTE[str.GetLength()+1];??
?
for(int?i=0;?ibr>?  lpb[str.GetLength()]=0;?
return?lpb;?
}?
以下則是具體的修改注冊(cè)表用戶信息的代碼:?
CString?str_owner,?str_company;?
……?
//通過對(duì)話框輸入新的用戶信息,保存到str_owner和str_company?
//定義有關(guān)的?hKEY,?在程序的最后要關(guān)閉。?
HKEY?hKEY;??
LPCTSTR?data_Set
="Software\\Microsoft\\Windows\\CurrentVersion";?

轉(zhuǎn)載于:https://www.cnblogs.com/yjm0105/archive/2005/05/26/162887.html

總結(jié)

以上是生活随笔為你收集整理的用VC++修改注册表----让我们踏出第一步(适合初学者)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。