用C來註冊表API編程

來源:互聯網
上載者:User

標籤:des   style   blog   http   os   使用   ar   sp   2014   

註冊表這個東西是個很好玩的東西,但是總是在一層一層的內含項目關聯性裡找到需要的項真是有點麻煩,而且有誰會記住路徑呢?

反正我是不會記的,寫個小程式,讓路徑儲存進代碼裡面。釋放自己的大腦儲存容量。

個人就以開啟Windows 8 的Aero效果為例示範註冊表API的簡單編程。

流程

首先來熟悉一下簡單的流程:

簡單瞭解後就可以開始正題。

代碼

這裡準備了兩個函數,這兩個函數的代碼幾乎一樣,只是修改的值不一樣,所以下面本人只會對一個函數進行簡單概述。

參數

這個函數裡包括了三個參數,三者都是個人預設的,來自這裡:

註:這裡提醒一下,的路徑要用兩個”\”,別忘了逸出字元。

錯誤判斷

開啟或設定一個項,判斷一下是否成功還是有必要的。如果成功會返回0,也可以用ERROR_SUCCESS。

使用函數

開啟一個項用RegOpenKeyEx(),這裡給出函數原型(來自MSDN):

第一個參數是系統預設值,HKEY型,注意這不是核心型的。這裡列出所有預設值:

第二個參數是子路徑。

第三個參數MSDN給出必須是0。

第四個參數設定了要操作的許可權,可寫或唯讀等。

第五個指標是輸出,這裡就必須要在前面定義一個HKEY型的變數,然後給出指標。

 

設定一個項的值用RegSetValueEx(),這裡給出函數原型(來自MSDN):

第一個參數是一個已存在的或已開啟的項,這裡就是用了RegOpenKeyEx()開啟項後的最後一個參數。

第二個參數是所要設定值的項名,知道項名可以使用這個函數。

第三個參數MSDN給出也必須為0.

第四個參數是預設的開啟的方式,這裡的REG_DWORD是32位的數。

第五個參數是要設定的值的BYTE類型,用強制類型把ValueOfAero這個整數值轉換為BYTE類型。

第六個參數則是設定值的長度,直接用sizeof()擷取ValueOfAero的長度即可。

 

到這裡到了最後一個步驟,關閉開啟項,直接用RegCloseKey(),參數為已開啟的項。

最後登出系統(其實關閉“桌面視窗管理員”就可以了,但我不知道怎麼做)就可以開啟了Aero效果。不國個人感覺這樣開啟的效果不是很完美,但註冊表編程的目的已達到。

 

 

擴充

因為兩個函數代碼一樣,這樣就可以在寫多一個函數,實現相同部分的代碼,實現代碼的重複使用,也簡化一些代碼,這個也很容易實現,我就不說明了。

還有,可以在代碼中加入報錯功能,GetLastError()就可以輕易實現,當然你也可以再把報錯碼轉換成文字錯誤。

最後

最後貼出兩個函數的具體參數連結(更多的操作函數都可以在MSDN查詢到,真是個好地方):

RegOpenKeyEx():

http://msdn.microsoft.com/en-us/library/windows/desktop/ms724897(v=vs.85).aspx

RegSetValueEx():

http://msdn.microsoft.com/en-us/library/windows/desktop/ms724923(v=vs.85).aspx

用C來註冊表API編程

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.