登錄檔程式設計淺解析

2021-06-18 23:20:32 字數 2451 閱讀 2070

什麼是登錄檔?登錄檔本質上就是windows裡的乙個資料庫。支撐其實現的結構是樹形結構。登錄檔裡面儲存的就是一些亂七八糟的什麼配置資訊啊,使用者資訊啊等,具體的自己google去吧!

既然登錄檔是用樹形結構儲存的,那麼我就按照樹的結構來剖析吧。

《一》登錄檔結構

鍵:鍵是登錄檔特有名稱之一,你可以把鍵理解成資料夾,理解成乙個表的表項(登錄檔本身也可以理解成乙個表)。但是在這裡,鍵其實就是這棵樹的非葉子節點。

從根節點開始,這棵樹主要可以分為五大分支,分別記錄五大類資訊,具體如下(參考msdn)

根項名稱

描述hkey_local_machine

包含關於本地計算機系統的資訊,包括硬體和作業系統資料,如匯流排型別、系統記憶體、裝置驅動程式和啟動控制資料。

hkey_classes_root

包含用於各種 ole 技術和檔案類關聯資料的資訊。如果hkey_local_machine\software\classeshkey_current_user\software\classes中存在相應的項或值,則在hkey_classes_root中會存在某個特定的項或值。如果兩處均存在項或值,則hkey_current_user版本將是出現在hkey_classes_root中的那乙個。

hkey_current_user

包含當前以互動方式(與遠端方式相反)登入的使用者的使用者配置檔案,包括環境變數、桌面設定、網路連線、印表機和程式首選項。該子樹是hkey_users子樹的別名,它指向hkey_users\當前使用者的安全 id。

hkey_users

包含關於動態載入的使用者配置檔案和預設配置檔案的資訊。它包含同時出現在hkey_current_user中的資訊。正在遠端訪問伺服器的使用者在伺服器上的該項下沒有配置檔案;他們的配置檔案將載入到自己計算機的登錄檔中。

hkey_current_config

包含在啟動時由本地計算機系統使用的硬體配置檔案的相關資訊。該資訊用於配置一些設定,如要載入的裝置驅動程式、顯示時要使用的解析度。該子樹屬於hkey_local_machine子樹,它指向hkey_local_machine\system\currentcontrolset\hardware profiles\current

每個根項名均以hkey_開頭,以便向軟體開發人員指出這是可以由程式使用的控制代碼。控制代碼是乙個值,用於識別資源。有了控制代碼,程式就能對資源進行訪問。

值:值就是登錄檔裡儲存的資訊。值包括三個部分:值名稱(name)、值型別(type)和值本身(value)。在這顆樹里,值就是葉子節點。每個葉子節點都包含這三個部分,記錄著系統或使用者的某乙個配置資訊。

《二》操作註冊

登錄檔的操作無非就是依據登錄檔的結構來的。比如建立鍵:就是給這棵樹添個樹枝。開啟鍵:這個還不太好比喻,暫且想象是爬到這個樹枝上玩吧。寫入值:找到某個頁節點然後寫入資訊。最後就是讀取值。基本的操作就這四種。其實win32 api提供了大量的函式來方便程式設計師管理登錄檔,最基本的也就這些。如果程式設計中想用其他的,自己msdn吧。

給乙個思路:只要你能想到的合理的操作,就大膽msdn,windows不會讓你失望的。

1)建立鍵:

long regcreatekey(hkey hkey,lpctstr lpsubkey,phkey phkresult);

函式的具體引數含義和用法並不是講解的重點,也不是應該掌握的重點,這些完全可以順手msdn到,理解原理才是關鍵。

2)開啟鍵:

long regopenkey(hkey hkey,lpctstr lpsubkey,phkey phkresult);

3)寫入值:

long regsetvalue(hkey hkey,lpctstr lpsubkey,dword dwtype,lpctstr lpdata,dword cbdata);

4)讀取值:

long regqueryvalue(hkey hkey,lpctstr lpsubkey,lptstr lpvalue,plong lpcbvalue);

《三》簡單demo(請include)

void regwrite()

int main()

API 登錄檔程式設計

首先來認識一下鍵,項,值吧 左邊有五個根鍵 hkey classes root hkey current user hkey local machine hkey user hkey current config 根鍵展開後可以看到子健 像 software,microsoft,windows,cu...

登錄檔程式設計掃盲(三

三。regqueryvalueex和regenumvalue 以上都是在說如何寫登錄檔,不過很多情況下都要讀登錄檔的。啊,來看一下有哪幾個api,1,2,怎麼又這麼多?算了,就說兩個吧,應該夠用了的。還是先說一下regqueryvalueex吧,這回看不出什麼意思了,query是什麼意思呢?別急,我...

REG登錄檔檔案全面解析

在我們對登錄檔進行設定或是修改的時候,有時候可能會用到一種擴充套件名為reg的檔案,那麼這個檔案到底是個什麼東東呢?它到底有什麼作用,怎麼建立它,又該如何實現對登錄檔的各種操作呢?下面筆者為你一一道來!是什麼?reg檔案實際上是一種登錄檔指令碼檔案,雙擊reg檔案即可將其中的資料匯入到登錄檔中。通過...