註冊表初識

來源:互聯網
上載者:User

轉自 http://blog.csdn.net/xiaoxiaohai123/article/details/1685153  (部分修改)

參考《深入解析Windows作業系統》(第四版) 潘愛民  譯

一、簡介:

       註冊表(Registry),本質上來說,就是一個資料庫,用於儲存系統和應用程式的設定資訊,直接控制著windows的啟動、硬體驅動程式的裝載以及一些windows應用程式的運行,從而在整個系統中起著核心作用,其結構類似於磁碟卷的結構。註冊表包含了
(key)和 (value)。鍵類似於磁碟的目錄,而值則好比磁碟上的檔案。鍵是一個容器,可以包含其他的鍵(子鍵)和值,而值儲存的是資料。最頂級的鍵是根鍵(Root  key),只有根鍵才不是子鍵。

      註冊表有6個根鍵,你不能加入新的根鍵,也不能刪除已有的根鍵。開啟註冊表就能看見其結構。開啟方法:(1)直接雙擊regedit.exe,一般位於C:\Windows目錄下(作業系統裝在C盤);(2)“開始”----“運行“,在出現對話方塊中輸入regedit,然後斷行符號即可。

     註冊表的每個根鍵控制代碼都是固定不變的,如下表所示:

鍵名 控制代碼 鍵名 控制代碼
HKEY_CLASSES_ROOT &H80000000 HKEY_DYN_DATA &H80000006
HKEY_CURRENT_CONFIG &H80000005 HKEY_LOCAL_MACHINE &H80000002
HKEY_CURRENT_USER &H80000001 HKEY_USERS &H80000003

     註冊表資料類型
     程式中要用到的註冊表資料類型如下表所示:

REG_BINARY 位元據
REG_DWORD 32位雙字
REG_DWORD_LITTLE_ENDIAN 大計數法格式32位元字,一個字的有效位元組是高端字
REG_DWORD_BIG_ENDIAN 大計數法格式32位元字,一個字的有效位元組是低端字
REG_EXPAND_SZ 空終止字串,包括對"&TEMP&"之類環境變數的引用
REG_LINK 單一代碼符號鏈
REG_MULTI_SZ 定義包括空終止字串的數組,數組被兩個實際的Null 字元串結束
REG_NONE 未定義實值型別
REG_RESOUSE_LIST 裝置驅動程式列表
REG_SZ Null 字元串,是儲存字串的最通用格式

二、API操作 

    既然註冊表對於作業系統來說,至關重要。那麼對於註冊表的修改,就必須十分謹慎。(如果你掌握了安全的修改註冊表的方法,還是能做出很多意想不到的效果滴)一般而言,我們不推薦直接編輯註冊表,而微軟也為我們提供了一下API來操作註冊表,本文就藉助簡單的例子介紹一下常用的幾個函數的運用。

(1)RegCreateKeyEx  ——建立一個鍵,如果這個鍵已經存在的話,就相當是把它開啟了。

其聲明如下:(九個參數)

LONG RegCreateKeyEx(  HKEY hKey,                  LPCTSTR lpSubKey,           DWORD Reserved,             LPTSTR lpClass,             DWORD dwOptions,            REGSAM samDesired,          LPSECURITY_ATTRIBUTES lpSecurityAttributes,  PHKEY phkResult,          LPDWORD lpdwDisposition   );

參數介紹:
hKey:這是一個已經開啟的鍵的控制代碼,看來是要在一個已經開啟的鍵建立一個子鍵了。就好象在一個已經存在的目錄下建立一個字目錄一樣。如果你開始沒有一個已經開啟的鍵的控制代碼,則hKey可以是如下的值:
                         HKEY_CLASSES_ROOT
                         HKEY_CURRENT_CONFIG
                         HKEY_CURRENT_USER
                         HKEY_LOCAL_MACHINE
                         HKEY_USERS
                         HKEY_DYN_DATA                          (只能是Win98,Win95,WinMe系統)

lpSubKey:一個字串,不用說是什麼意思了吧?就是說你要把你的註冊表鍵放在哪個位置了。注意:lpSubKey不能為NULL,且字串中 \ 應為  \\ ;
Reserved:保留的,必須是0。
lpClass:一個字串,據說是指定你要建立的鍵的類型,設它為NULL;
dwOptions:對你建立的鍵的一些選項。可以是這些值:REG_OPTION_NON_VOLATILE,REG_OPTION_VOLATILE,REG_OPTION_BACKUP_RESTORE
samDesired :對這個建立的鍵的存取權限了,一般設定為KEY_ALL_ACCESS;
lpSecurityAttributes:可設為NULL。
phkResult:這可是個很重要的參數了,建立一個鍵後,這個鍵的控制代碼就放在這裡,以後操作就全靠它了。注意了,它是一個指向HKEY的指標。
lpdwDisposition:又是一個指標,調用完此函數後,可以通過它來檢測是開啟了一個已經存在的鍵(REG_OPENED_EXISTING_KEY),還是建立了一個鍵(REG_CREATED_NEW_KEY)。

當建立一個鍵成功,其傳回值為ERROR_SUCCESS,否則,則為失敗。

#include<windows.h>void main(){ DWORD dwRes; HKEY hk; if(ERROR_SUCCESS==RegCreateKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE//Carrier Studio//Hello",  0,                                  NULL,                              REG_OPTION_NON_VOLATILE,           KEY_ALL_ACCESS,                    NULL,                              &hk,&dwRes)printf("Create  key  Successful!\n");} 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.