【Windows 95/98注冊表結構】
--------------------------------------------------------------------------------
1.注冊表Reigstry的層次結構
注冊表Reigstry的層次結構類似于硬盤中的目錄樹我們可參見圖1.2。
┌──────┐
│ 注冊表 │
│ Registry │
└──┬───┘
│
│ ┌────┐
├─┤ 根鍵 │
│ └─┬──┘
│ ┌────┐
├──┤ 子鍵 │
│ └─┬──┘
│ ┌────┐
├──┤ 子鍵 │
│ └─┬──┘
│ ┌───┐
├─┤鍵值項│
│ └───┘
圖1.2
表1.1是對圖1.2中的Registry層次結構的解釋。
表1.1 圖1.2中的Registry層次結構的解釋
層次
說 明
根鍵
根鍵類似于硬盤上的根目錄。 Registry有四個預定義的根鍵:
1、HKEY_LOCAL_MACHINE
2、HKEY_USERS
3、HKEY_CURRENT_USER
4、HKEY_CLASSES_ROOT
鍵與子鍵
鍵和子鍵類似于文件管理器中看到的目錄結構在鍵下面是子鍵就象目錄可以包含子目錄一樣
鍵值項
鍵值項類似硬盤上樹型目錄的末端文件,鍵和子鍵可以包括一個或多個鍵值項。鍵值項由鍵值名、數據類型和鍵值三部分組成,其格式為:“鍵值名:數據類型:鍵值”。
鍵值類型
Registry中有如下三種鍵值類型:
DWORD值:只允許一個鍵值并且必須為1-8個16進制數據(即雙字)。
字符串值:只允許一個鍵值并且作為要存儲的字符串來解釋。
二進制值:只允許一個值是16進制數字串每對作為一個字節值解釋。
表1.1
六大根鍵的作用
在注冊表中,所有的數據都是通過一種樹狀結構以鍵和子鍵的方式組織起來,十分類似于目錄結構。每個鍵都包含了一組特定的信息,每個鍵的鍵名都是和它所包含的信息相關的。如果這個鍵包含子鍵,則在注冊表編輯器窗口中代表這個鍵的文件夾的左邊將有“+”符號,以表示在這個文件夾中有更多的內容。如果這個文件夾被用戶打開了,那么這個“+”就會變成“-”。
1、HKEY_USERS
該根鍵保存了存放在本地計算機口令列表中的用戶標識和密碼列表。每個用戶的預配置信息都存儲在 HKEY_USERS 根鍵中。 HKEY_USERS 是遠程計算機中訪問的根鍵之一。
2、HKEY_CURRENT_USER 該根鍵包含本地工作站中存放的當前登錄的用戶信息 ,包括用戶登錄用戶名和暫存的密碼 ( 注:此密碼在輸入時是隱藏的 ) 。用戶登錄 Windows 98 時,其信息從 HKEY_USERS 中相應的項拷貝到 HKEY_CURRENT_USER 中。
3、HKEY_CURRENT_CONFIG 該根鍵存放著定義當前用戶桌面配置 ( 如顯示器等 ) 的數據 , 最后使用的文檔列表( MRU )和其他有關當前用戶的 Windows 98 中文版的安裝的信息。
4、HKEY_CLASSES_ROOT 包含注冊的所有ole信息和文檔類型,是從 hkey_local_machine/software/classes復制的。根據在 Windows 98 中文版中安裝的應用程序的擴展名 , 該根鍵指明其文件類型的名稱 。
5、HKEY_LOCAL_MACHINE 該根鍵存放本地計算機硬件數據 , 此根鍵下的子關鍵字包括在 SYSTEM。DAT 中 ,用來提供 HKEY_LOCAL_MACHINE 所需的信息 ,或者在遠程計算機中可訪問的一組鍵中。該根鍵中的許多子鍵與 System。ini 文件中設置項類似。
6、KEY_DYN_DATA 該根鍵存放了系統在運行時動態數據,此數據在每次顯示時都是變化的,因此,此根鍵下的信息沒有放在注冊表中
2.Registry與INI文件之間的關系
Registry與Windows 98中的INI文件有許多相似之處。鍵或子鍵類似于INI文件中的小節一個鍵值項對應于INI文件中小節里的一條設置項。然而Registry可以包括子鍵而INI文件不支持小節的嵌套。
Registry中的鍵值項還可以包含可執行代碼而在INI文件中設置項只是簡單的字串。
在同一臺計算機上有多個用戶Registry可以存儲每個用戶的特性而INI文件中卻不可能。
如果您在Windows 3.x上升級為Windows 98,則安裝程序會從System.ini和Win.ini文件文件中選擇一些延續信息放入到注冊表中。不過,為了與以前的Windows版本上的老式16位應用程序保持兼容,INI文件中的有些設置項不能遷移到Windows 98的注冊表中。有關Win.ini、System.ini文件的結構與設置項信息詳見附錄A。
1.注冊表中Win.ini信息
表1.2列出了Windows 98在升級安裝過程中,從Win.ini文件中移出的部分設置項,以及在注冊表中的位置。所有的子鍵都處于注冊表的HKEY_CURRENT_USER根鍵中。
表1.2 注冊表中Win.ini信息
小節
設置項
HKEY_CURRENT_USER中的子鍵分支
[desktop]
GridGranularity
Control Panel/desktop
Pattern
Control Panel/desktop
TileWallPaper
Control Panel/desktop
[windows]
ScreenSaveActive
Control Panel/desktop
ScreenSaveTimeOut
Control Panel/desktop
[Sounds]
Sound Event Name
AppEvents/Schemes/Apps/.Default/Sound Event Name/.current
[Hearts]
Name
Software/Microsoft/Windows/CurrentVersion/Applets/Hearts
2.注冊表中的System.ini信息
表1.3列出了Windows 98在升級安裝過程中從System.ini文件中移出的設置項,以及在注冊表中的位置,這些子鍵都處于注冊表的HKEY_LOCAL_MACHINE根鍵中。根據機器的網絡配置,有些系統可能不會出現某些子鍵。
表1.3 注冊表中的System.ini信息
小節
設置項
HKEY_LOCAL_MACHINE內的子鍵分支
[Network]
Comment
System/CurrentControlSet/Services/VxD/VNETUP
ComputerName
System/CurrentControlSet/Control/ComputerName/ComputerName
EnableSharing
沒有子鍵入口
LMAnnounce
System/CurrentControlSet/Services/VxD/VNETUP
LogonDomain
沒有子鍵入口
Logon Validated
沒有子鍵入口
MaintainServerList
System/CurrentControlSet/Control/ComputerName/ComputerName
Reconnect
Reshare
沒有子鍵入口
沒有子鍵入口
Username
Network/Logon
Workgroup
System/CurrentControlSet/Control/ComputerName/ComputerName
[386Enh]
Network
沒有子鍵入口
Transport
Software/Microsoft/Windows/CurrentVersion/Network/Real Mode Net
1.2 注冊表Registry的組成
我們知道在Windows 3.x中提供了一個注冊數據庫Reg.dat它是一個一般二進制文件它可用Regedit.exe程序來維護。Reg.dat是一個十分軟弱的數據文件在Windows 3.x中增加或刪除O LE應用程序時經常受到不同程度的破壞。
Windows 98改變了Windows 3.x的做法采用了一種強大的注冊表Registry它要比Reg.dat更為可靠。
3.注冊表的文件組成
注冊表Registry由五個文件組成的。介紹如下。
1.系統配置注冊表文件System.dat
在Windows 98的系統目錄中有一個隱含、系統、只讀文件System.dat它是Windows 98注冊表的一部分該文件具有如下作用:
● 描述單一的PC配置。
● 描述安裝在一單獨的PC上的消息。
● 安裝即插即用類型的設備硬件配置如設備的I/O地址、IRQ級和DM A通道等。
該文件的作用有點類似Windows 3.x中的System.ini文件。
該文件在Windows 98的網絡運行狀態時保存在本地的工作站或本地PC機中。
在Windows 98安裝期間Setup將檢查您的計算機上已安裝的硬件然后在System.dat中建立適當的配置項。若從現有的Windows 3.x中安裝Windows 98則Setup將把現有的System.ini、Reg.dat文件中的部分設置項拷貝到System.dat中,詳見1.1.3節。
在您使用“控制面板”的“系統”圖標查看硬件配置時其窗口中所顯示的選項都是從System.dat中讀取的如圖1.3所示。
圖1.3
2.系統配置注冊表備份文件System.da0
Windows 98的注冊表的一個主要特點就是可靠性強不易損壞。這個特點靠的就是注冊表有備份文件。
系統配置注冊表System.dat的備份文件為System.da0該文件在System.dat文件遭到意外破壞時將由系統自動拷貝為System.dat。
3.用戶平臺配置注冊表文件User.dat
在Windows 98的系統目錄中有一個隱含、系統、只讀文件User.dat它也是Windows 98的注冊表的一部分該文件具有如下作用:
● 它定義用戶優先權如用戶平臺配置等。
● 特定于某一個用戶的應用程序的安裝信息。
該文件的作為類似于Windows 3.xWin.ini文件。
當您在Windows 98中使用網絡時User.dat必須放在網絡服務器上。 在您第一次輸入用戶標識和密碼時安裝程序將把這些信息存儲在User.dat中。您的Windows 98的系列號也存儲在USER.DAT中。
如果用戶在“控制面板”的“密碼”圖標中選擇了“用戶可自定義首選項及桌面設置登錄時,Windows自動啟用個人設置”這個選項后(參見圖1.4所示),系統就會為每個用戶創建他自己的User.Dat,并且把它保存為C:/Windows/Profiles/用戶名/User.dat。用戶每次登錄后,他自給的User.dat會被調入到系統中。
圖1.4
4.用戶平臺配置注冊表備份文件User.da0
用戶平臺配置注冊表文件User.dat也有一個備份文件User.da0。當User.dat遭到意外破壞時將由系統將User.da0拷貝為User.dat從而使User.dat得到了恢復。
5.網絡管理注冊表文件Config.pol
若您在Windows 98安裝了“系統策略編輯器”后,則用戶可以使用Config.pol文件中的限制來決定系統如修改注冊表,也就是說,系統根據Config.pol中的設置對網絡用戶的操作作一些限制,這種限制在Windows 98被稱為“策略”。Config.pol文件也是一個隱含、系統、只讀文件,它主要用于Windows 98的網絡用戶的管理方面的策略。
6.網絡管理注冊表備份文件Config.po0
同System.dat、User.dat有備份文件一樣Config.pol也有一個備份文件Config.po0它是一個隱含、系統、只讀文件。它存放在網絡服務器中。
1.2.2 注冊表中的根鍵
使用注冊表編輯器可以觀察注冊表中的根鍵,如圖1.5所示。
圖1.5
注意:在“運行”對話框中輸入RegEdit,然后單擊“確定”按鈕,則可以運行注冊表編輯器,詳見第2章介紹。
圖1.5顯示了Windows 98中文版的注冊表Registry?(System.dat、User.dat、Config.pol)的數據組織結構。
圖1.5左窗格顯示的是注冊表的根鍵,這樣的根鍵共六個。?這些根鍵都是大寫的并以HKEY_為前綴?這種命令約定是以Win32 API的Registry函數的關鍵字的符號變量為基礎的。 雖然在注冊表中,六個根鍵看上去處于一種并列的地位,彼此毫無關系。但事實上,HKEY_CLASSES_ROOT和HKEY_CURRENT_CONFIG中存放的信息都是HKEY_LOCAL_MACHINE中存放的信息的一部分,而HKEY_CURRENT_USER中存放的信息只是HKEY_USERS存放的信息的一部分。
HKEY_LOCAL_MACHINE包括HKEY_CLASSES_ROOT和HKEY_CURRENT_USER中所有的信息。在每次系統啟動后,系統就映射出HKEY_CURRENT_USER中的信息,使得用戶可以查看和編輯其中的信息。
實際上,HKEY_LOCAL_MACHINE/SOFTWARE/Classes就是HKEY_CLASSES_ROOT,為了用戶便于查看和編輯,系統專門把它作為一個根鍵。同理,HKEY_CURRENT_CONFIG/SYSTEM/Current Control就是HKEY_LOCAL_MACHINE/SYSTEM/Current Control。
HKEY_USERS中保存了默認用戶和當前登錄用戶的用戶信息。HKEY_CURRENT_USER中保存了當前登錄用戶的用戶信息。
HKEY_DYN_DATA保存了系統運行時的動態數據,它反映出系統的當前狀態,在每次運行時都是不一樣的,即便是在同一臺機器上。
根據上面的分析,注冊表中的信息可以分為HKEY_LOCAL_MACHINE和HKEY_USERS兩大類,這兩大類的詳細介紹參見第3章。
1.2.3 注冊表中的鍵與子鍵
在注冊表中(參見圖1.5所示),所有的數據都是通過一種樹狀結構以鍵和子鍵的方式組織起來,十分類似于目錄結構。每個鍵都包含了一組特定的信息,每個鍵的鍵名都是 和它所的信息相關的。如果這個鍵包含子鍵,則在注冊表編輯器窗口中代表這個鍵的文件夾的左邊將有“+”符號,以表示在這個文件夾中有更多的內容。如果這個文件夾被用戶打開了,那么這個“+”就會變成“-”,如圖1.6所示。
圖1.6
1.HKEY_USERS
該根鍵保存了存放在本地計算機口令列表中的用戶標識和密碼列表。?每個用戶的預配置信息都存儲在HKEY_USERS根鍵中。?HKEY_USERS是遠程計算機中訪問的根鍵之一。圖1.7為HKEY_USER子關鍵字連接情況。
圖1.7
2.HKEY_CURRENT_USER
該根鍵包含本地工作站中存放的當前登錄的用戶信息包括用戶登錄用戶名和暫存的密碼(注:此密碼在輸入時是隱藏的)。用戶登錄Windows 98時其信息從HKEY_USERS中相應的項拷貝到HKEY_CURRENT_USER中。圖1.8為HKEY_CURRENT_USER根鍵下各個鍵之間連接的情況。
圖1.8
3.HKEY_CURRENT_CONFIG
該根鍵存放著定義當前用戶桌面配置(如顯示器等)的數據以及最后使用的文檔列表(MRU)和其他有關當前用戶的Windows 98中文版的安裝的信息.
圖1.9為HKEY_CURRENT_CONFIG子關鍵字之間的連接情況。
圖1.9
4.HKEY_CLASSES_ROOT
根據在Windows 98中文版中安裝的應用程序的擴展名該根鍵指明其文件類型的名稱。
在第一次安裝Windows 98中文版時RTF(Rich Text Format)文件與寫字板(WordPad)?聯系起來但在以后安裝了中文Word 6.0后?雙擊一個RTF文件時將自動激活Word。存放在SYSTEM.DAT中的HKEY_CLASSES_ROOT???將替代WIN.INI文件中的[Extensions]?小節中的設置項它把應用程序與文件擴展名聯系起來它也替代了Windows 3.x中的Reg.dat文件中的相似的設置項。?圖1.10顯示了HKEY_CLASSES_ROOT根鍵中包括的文件擴展名的情況。
圖1.10
5.HKEY_LOCAL_MACHINE
該根鍵存放本地計算機硬件數據此根鍵下的子關鍵字包括在SYSTEM.DAT中用來提供HKEY_LOCAL_MACHINE所需的信息或者在遠程計算機中可訪問的一組鍵中。
該根鍵中的許多子鍵與System.ini文件中設置項類似。
圖1.11顯示了HKEY_LOCAL_MACHINE根鍵下的各個子鍵之間的情況。
圖1.11
6.HKEY_DYN_DATA
該根鍵存放了系統在運行時動態數據,此數據在每次顯示時都是變化的,因此,此根鍵下的信息沒有放在注冊表中。圖1.12顯示了HKEY_DYN_DATA根鍵下的各個子鍵的情況。
圖1.12
1.2.4 注冊表中的鍵值項數據
注冊表通過鍵和子鍵來管理各種信息。但是,注冊表中的所有信息是以各種形式的鍵值項數據保存下來。在注冊表編輯器右窗格中,保存的都是鍵值項數據。這些鍵值項數據可分為如下三種類型:
1.字符串值
在注冊表中,字符串值一般用來表示文件的描述、硬件的標識等。通常它由字母和數字組成,最大長度不能超過255個字符。在圖1.13所示中,“D:/pwin98/trident”即為鍵值名“a”的鍵值,它是一種字符串值類型的。同樣地,“ba”也為鍵值名“MRUList”的鍵值。通過鍵值名、鍵值就可以組成一種鍵值項數據,這就相當于Win.ini、Ssytem.ini文件中小節下的設置行。其實,使用注冊表編輯器將這些鍵值項數據導出后,其形式與INI文件中的設置行完全相同了。詳見第3章。
圖1.13
2.二進制值
在注冊表中,二進制值是沒有長度限制的,可以是任意個字節長。在注冊表編輯器中,二進制以十六進制的方式顯示出來,如圖1.14所示。
圖1.14
在圖1.14中,鍵值名Wizard的鍵值“80 00 00 00”就是一個二進制
注意:在如圖1.15所示的“編輯二進制值”對話框時,在編輯框的左邊輸入十六進制數時,其右邊將會顯示相應的ASCII碼。
圖1.15
3.DWORD值
DWORD值是一個32位(4個字節,即雙字)長度的數值。在注冊表編輯器中,您將
圖1.16
發現系統會以十六進制的方式顯示DWORD值,如圖1.16所示。
注意:在編輯DWORD數值時,可以選擇用十進制還是16進制的方式進行輸入,如圖1.17所示。
圖1.17
1.3 注冊表的雙重入口
在注冊表中經常出現雙重入口(分支),例如,有一些在HKEY_CLASSES_ROOT中的鍵同樣會在HKEY_LOCAL_MACHINE中出現,如圖1.18所示。
圖1.18
如果這些相同的分支出現在兩個不同的根鍵中,那么,哪個根鍵有效呢?
注冊表的子鍵都有嚴格的組織。如果相同的信息出現在超過一個的子鍵中,如果您只修改了一個子鍵,那么該修改是否作用于系統依賴于該子鍵的等級。一般來說,系統信息優先于用戶等級。例如,一個設置項同時出現在HKEY_LOCAL_MACHINE和HKEY_USER子鍵中,通常由HKEY_LOCAL_MACHINE中的數據起作用。要注意的是,這種情況只發生在您直接編輯注冊表時。如果您從“控制面板”中更改系統配置,則所有出現該設置項的地方均會發生相應的改變。
例如,您可以通過注冊表設置文件關聯,即將一個帶有特殊后綴的文件連接到一個應用程序上。在注冊表中,有四個子鍵都保存了文件管理的數據,它們分別是:HKEY_CLASSES_ROOT、HKEY_CURRENT_USER、HKEY_LOCAL_MACHINE、HKEY_USER。在缺省情況下,所有后綴為1ST的文件都被連接到記事本程序(Notepad)上。如果您在Windows資源管理器雙擊該后綴的文件,則系統將激活記事本,同時將此文件調入編輯。但是您也可此文件關聯從Notepad改為Lotus Ami Pro(這也是一個字處理程序),則您在雙擊后綴為1ST的文件時,將激活Lotus Ami Pro程序,同時編輯此文件。但是,如果您在直接編輯注冊表時只修改一個子鍵,則會出現如下四種情況:
● 如果只修改HKEY_CLASSES_ROOT中的1ST項,則在雙擊1ST后綴的文件時將激活Lotus Ami Pro。
● 如果只修改HKEY_CURRENT_USER中的1ST項,則在雙擊1ST后綴的文件時將激活Notepad。
● 如果只修改HKEY_LOCAL_MACHINE中的1ST項,則在雙擊1ST后綴的文件時將激活Lotus Ami Pro。
● 如果只修改HKEY_USER中的1ST項,則在雙擊1ST后綴的文件時將激活Notepad。
在上面的例子中,HKEY_CLASSES_ROOT子鍵和HKEY_LOCAL_MACHINE子鍵看起來在控制文件關聯上相互獨立,這似乎有些自相矛盾,但是,要知道HKEY_CLASSES_ROOT根鍵就是HKEY_LOCAL_MACHINE/Software/Classes,因此,在改變HKEY_CLASSES_ROOT根鍵就是改變HKEY_LOCAL_MACHINE。
新聞熱點
疑難解答
圖片精選