
注冊表的損壞和解決修復方法
注冊表可能出現的問題。
如果注冊表受到嚴重的損害,存取硬件和軟件可能會受到很大的限制,甚至系統不能啟動。
可能因為一個很小的問題,一個應用程序將不能正常的運行,或者運行的不穩定。
當注冊表在運行時是受保護的,所以它不可能被復制,刪除,或者改變內容,除非經過一個“驗
證過的”程序(比如安裝程序,注冊表編輯工具,和域用戶管理器改變安全策略和瀏覽器等)。
由于這些保護,注冊表是十分安全的,但是并不是完全能防止的。問題仍會發生,你需要作好
認識它們的準備來應付這些問題。
當你注冊表出現問題時,我們大多數會聽到或者感覺到下面一些癥狀來認識問題,注冊表問
題的特征有:
昨天計算機(或者軟件程序)還工作,但是今天它就不工作了;
在我安裝軟件/硬件前它還工作,但是現在我無法使用它了;
我的系統不象以前那樣工作了;
當我試圖關閉計算機時,硬盤響個不停卻沒有什么反應;
我的計算機啟動不了了;
天!又是藍屏,死機了;
注冊表變的不正常一般來說有三種原因:
1、應用程序和驅動被添加到系統中
1)在注冊表中找出大半的錯誤與添加和刪除程序有關。多數用戶自己添加或者更新驅動,應
用程序等等。而且添加和刪除都是多次的。
2)程序本身也有問題。沒有任何應用程序沒有bug或者錯誤。最好的情況,就是錯誤微乎其
微,復雜深奧的問題你可能從來沒見過。在設計程序時因為受時間和經費的限制,這些錯誤
被放置不管。作為一個程序員來講,在程序里有錯誤可能是次要的,但是它使系統崩潰那就
變成一個大問題了。
3)驅動程序不兼容。個人計算機世界的開放結構體系造成了一定的風險,因為任何類型的部
件組合在一起都是可能的。但測試所有的組合并保證所有設備的兼容性卻不太可能。所以當
用在Win95下的驅動被用在Winnt時,某些問題就會產生。
4)在應用程序安裝過程中在注冊表中添加了不正確的項。在安裝時,多數應用程序使用叫一
個叫的文件詳細說明例如需要什么磁盤,哪個目錄將被建立,從哪里復制文件,
使應用程序工作正常所需要建立的注冊表項等等詳細信息。如果在中有一個錯
誤,這個改變也仍然會出現,就會出現嚴重的問題。
5)一個應用程序導致另一個應用程序和它缺省的文件關聯出現錯誤。當一個應用程序被安裝
后,缺省文件類型被記錄在注冊表中。然后用戶可以通過雙擊來啟動應用程序和裝載文件。
很多時候,其他應用程序也會使用同樣的擴展名。舉例說,當一個TIF圖形在基于注冊表里
的設置被激活時,最后一次裝載的程序將會變成一個執行體。有時候,徹底不相同和根本不
兼容的程序會在它們自己的文檔文件中使用相同的文件擴展名,啟動文檔的快捷方式將不會
工作。在用戶操作過程中,如果在文件打開方式選擇了不正確的程序,就會造成一定的問題。
6)在反安裝時出現的錯誤。當你在控制面板里的添加/刪除程序種刪除程序時,通過應用程序
自身的反安裝特征,或者通過第三方軟件,這可能會對注冊表造成損壞。除此之外,刪除程
序,輔助文件,數據文件和反安裝程序可能會試圖移去注冊表的參數項。因為系統不可能知
道一個應用程序在注冊表中所要存取的相關參數項,這將會不經意的移除掉其他應用程序的
參數項。
7)字體的錯誤。當注冊表中字體ID出錯,你將在應用程序中看到一種不同的字體。這就讓人
感覺很討厭并可能需要你移去部分或全部字體并取代它們。這經常發生在用戶頻繁安裝和刪
除字體的時候。
2、硬件設置改變或者硬件失敗
1)如果計算機系統自身有問題,注冊表會有損害。通常的,這些錯誤可以在正確的系統維護
和管理下避免。
2)病毒問題。病毒很隱秘的改變正常的文件和注冊表中的部分內容來影響我們的系統。
3)計算機用電如果不正常也會影響計算機系統,用UPS可以避免。
4)磁盤問題。很多時候你會因為容量不夠使硬件失敗而換掉你的硬盤。如果整塊硬盤失敗,
當然,你將不得不從備份中恢復你的注冊表。其他的則是磁盤獨立扇區或者簇的故障。雖然
這些情況在今天的系統不可能發生,但是磁盤表面介質的故障會使得磁盤部分不可讀,包括
那些注冊表文件位置。
3、用戶改動了注冊表
1)手工改變注冊表。當人們手工編輯注冊表,由于數據的復雜性和難懂性使得他們難免容易
犯錯誤,而且這個錯誤可能很嚴重導致系統工作發生中斷。
2)拷貝其他注冊表是很多用戶犯的一個嚴重錯誤。因為從其他機器上拷貝來的注冊表文件并
不意味著也會在這一個機器上工作正常。對單獨的系統來說注冊表都是特殊的。甚至計算機
硬件設備相同,拷貝來的注冊表在另一個系統上不見得就會工作。如果使用另一個系統的注
冊表,多數硬件設備將不會工作,用戶和安全問題可能造成數據和應用程序信息無法使用。
保護Windows注冊表
保護注冊表是很重要的,有很多不同的工具可以實現這一目的。當沒有安全設置時,用戶可
能的錯誤會更多。幸運的是,他們可以有幾中方法來保護Windows注冊表,在注冊表失敗時
他們可以用額外的拷貝來恢復注冊表。下面就是其中的一些方法:
1、使用windows備份軟件
注:Win95和Win98備份程序有部分區別,在這里只講Win98的備份程序。
Win98中包括一個備份程序。當安裝Win98時如果你選擇“自定義安裝”,或者你可以在控制
面板中的添加/刪除程序里安裝它。當你安裝了這個備份程序,從開始菜單|程序|附件|系
統工具|備份可以運行它。啟動時,這個程序提示你是否新建一個新備份,打開現有的備份
作業,或者是還原備份文件。
如果選擇新建備份,則會有一個備份向導提示你如何去做備份。
如果選擇取消向導,那么可以自己手工設置要備份的內容。在備份內容里可以備份網絡和本
地驅動器的文件。可以在你想備份磁盤或者文件的選擇框打上對號來做備份工作。然后在備
份在何處里填上你做備份的目的位置既可。如果要連同windows注冊表一起備份,那么在作
業|選項|高級里,在“備份windows注冊表”選擇框打對號就可以了。恢復則是備份的逆過程,
這里就不詳述了。
2、在安全模式下復制注冊表文件
當Win95運行時,注冊表文件被鎖定,只能用注冊表編輯器或者系統自己來進行存取,這些
文件不能夠被復制到其他地方。如果你在安全模式下啟動Win95,注冊表就不會使用同樣的方
法載入,這樣和就可以被復制。實際上安全模式下系統文件是
受保護的。
在啟動時,當計算機顯示StartingWindows95...時按F8鍵進入安全模式。改變
和的隱藏和只讀屬性這樣就可以看到和復制它們。當拷貝完注冊表文件,不要
忘記了改回它們只讀和隱藏屬性。
3、使用微軟配置備份來備份你的注冊表文件
是Win95(Win98中沒有這個軟件)所附帶的備份軟件。它在Win95CD-ROM
上的OtherMiscCFGBACK這個目錄。在系統上拷貝所有的文件到任何一個目錄,然后在桌
面上建立一個的快捷方式。
要做一個注冊表的備份,啟動CFGBACK然后在選擇的備份名位置輸入一個名字然后點備份
繼續。
注意:在使用CFGBACK前確定你已經關掉了所有運行的程序。如果有程序在運行,
CFGBACK可能將使得系統崩潰,數據丟失,而且保存的是一個不完整的備份。
4、導出注冊表
在我看來,如果你沒有磁帶機或者其他東西。在中導出選項有一個導出為文
本文件。通常使用一個壓縮工具,導出工具選項也可以被用做保存和保護注冊表的方法。
要導出在注冊表中的任意鍵,選中這個鍵然后選擇注冊|導出注冊表文件。這將會復制這個
鍵,并提示你在那里存放這個鍵及它的名字,然后用一個擴展名為.REG的文件保存這些數
據。
當我們用文本格式導出注冊表。我們可以使用象pkzip或者其他壓縮工具壓縮它(可以在正常
Dos模式運行的)來節省空間。
為了備份我們可以在windows目錄下建立一個用來做備份的文件夾。最少在一個月我們應該
進行定期的備份。因為許多計算機用戶訂閱或購買帶有贈送CD的計算機雜志。這些CD上
有大量的時間限制的共享軟件。許多用戶從其中安裝一個或者多個程序。當軟件過期時它們
反安裝這些程序,但是這些程序在注冊表中留下了一些痕跡。頻繁的添加/刪除程序會影響注
冊表,但是有了備份相對來說我們就比較安全了。
我們必須重新啟動計算機到DOS模式下來導入,假定你導出你的注冊表為.現在
在命令提示下打
REGEDIT/
注冊表編輯器將中的數據導入你的注冊表并保存。不過只在命令提示下這個全部
導入的工作才比較可靠。
技巧:如果你的注冊表不斷的變的龐大,那么先導出它然后象上面那樣再逐個導入它。在這個
導入導出過程中注冊表中不必要的項將被清除出去。如果你使用Win98那么你可以使用
程序。在windows目錄命令提示下打Scanreg/fix來執行命令。
請記住,預防要比修復好的多。注冊表太容易被改變了,在發生突然事件時有幾個注冊表的
備份是解決問題最好的方法。
從注冊表故障中恢復
這里有四種不同級別的方法可以從Windows注冊表故障中恢復
Restart
Redetect
Restore
Reinstall
讓我們來看每一個方法來斷定來使用它最適合的時間,并且解決何種類型的問題。
Restart(重新啟動)
Win95注冊表大部分內容保存在RAM中。如果哪個信息受損,它就必須重新讀取正確的信
息。當你重新啟動系統,注冊表將數據從硬盤讀到RAM中就可以使用了。
拿字體ID問題來說。每種字體在系統中用一個ID號來使用。當一個字體被用在一個文檔時,
這個字體被這個數字保存并且用一個名字來標識。當字體ID損壞那么字體顯示和打印將被其
他字體取代。重新啟動系統從硬盤上刷新數據,將產生修復過的字體ID,這樣字體顯示和打
印就變的正常了。
這也就是為什么Windows系統故障經常在重新啟動后就又恢復正常的一個原因。
RedetecttheDevices(重新檢測硬件)
如果一個設備工作不正常,那么在注冊表中控制設備的設置可能受損了。為了重新設置注冊
表,你應該刪除并且重裝設備的驅動,或者你應該讓Win95重新檢測它們。很多時候,當一
個設備工作不正常,它們會在設備管理器上此設備前使用一個驚嘆號標志顯示出來。很明顯,
如果設備從來不工作,可能就是其他問題了。但是如果設備以前工作,現在出問題,注冊表
就需要被恢復。
要檢測一個設備,在控制面板上選擇添加新硬件。第一個問題是文你“需要Windows搜索新
硬件嗎?”如果你選擇是,Win95將做一個徹底的搜索去找“新”設備。任何設置不正確的或者沒
找到驅動的設備將被檢測到并顯示出來。
Restore(恢復)
從CFGBACK中恢復注冊表
從CFGBACK中恢復注冊表有很多好處。如果你建立了幾個備份,你可以選擇正確的一個來
恢復。你可以如同做手術般放置排列注冊表參數項。
導入注冊表文件
象前面章節講述的那樣,一個代替使用備份的方法就是導入一個.REG文件。.REG文件包括
了目的數據位置,所以對這個文件簡單的雙擊就可以將數據放入注冊表。它是所有恢復程序
中最簡單的,但是也可能造成錯誤。錯誤不會是用把數據寫入錯誤的位置,
它很可能出現在用戶直接雙擊注冊表文件的時候。
Reinstall(重新安裝)
重新安裝
最后的方法就是重新安裝驅動、應用程序或者Win95。一般來說,它只花費你一個小時左右
時間去做這些事。如果你在現有的文件上重新安裝,很多配置信息還被安裝在同樣的地方。
同樣在安裝驅動程序時,你應該重新加入配置數據。
實際上找出原因并修復它所花費的時間比重新安裝還要多,這就是為什么重新安裝在技術支
持上是一個相當普通的“解決方法”。關鍵的問題在于,“你是否想找出是什么錯誤,或者你是
否只想讓它工作正常?”答案取決于問這個問題的用戶情況,發生問題的頻繁次數和重新安裝
的軟件的實用性。
當Windows第一次被安裝時它將在啟動目錄的根目錄上創建一個名為SYSTEM.1ST的文
件。這是Windows第一次啟動時創建的個簡單的文件。你所應該做的就是將這
個文件放到windows目錄(在dos模式下)并將它的名字改為。然后重新啟動。
然后你就可以得到安裝時第一次啟動的windows。
因為很多.INI,.DLL和其他文件的改變,這種方法的成功機率大概只超過50%。比如當裝IE4.0
后系統和注冊表將有一個徹底的改變。我們的system.1st文件雖然包含了一個Dll文件的參
考,但它可能更新或者改變版本號。
這里就是幾個在注冊表出故障的時候恢復它的工具和方法。你的數據可能會安全恢復,但是
不管你用什么方法,除了重新格式化硬盤,最好的方法就是做好系統注冊表的備份工作。
HKEY_LOCAL_MACHINE
HKEY_LOCAL_MACHINE是一個顯示控制系統和軟件的處理鍵。HKLM鍵保存著計
算機的系統信息。它包括網絡和硬件上所有的軟件設置。(比如文件的位置,注冊和未注
冊的狀態,版本號等等)這些設置和用戶無關,因為這些設置是針對使用這個系統的所有
用戶的。
HKEY_LOCAL_MACHINEAppEvents
為了以后在客戶機上運行客戶機/服務器這樣的應用程序,在Win95/98中AppEvents
鍵是空的。應用程序實際上都駐留網絡服務器上,這些鍵會保存部分指針。
HKEY_LOCAL_MACHINEConfig
這個鍵保存著你計算機上所有不同的硬件設置(這些從控制面板的系統屬性中硬件配
置文件中可以創建)。這些配置在啟動時通常被復制到HKCC。每個配置會被用一個鍵(比
如0001或者0002等等)來保存,每個都是一個獨立的配置。如果你只有一個單一的配置,
那就只會有0001這個鍵
HKEY_LOCAL_MACHINEConfig0001Display
這個鍵表示顯示的設置,如熒屏字體,窗體大小,窗體位置和分辨率等
一個小技巧:當設置了計算機不支持的大分辨率導致Windows不能啟動時(黑屏),
可以修改分辨率來解決。進入安全模式,運行,在這個鍵的Resolution鍵值中
把數據值修改為640,480或者800,600這樣的低分辨率,然后重新啟動計算機即可。
HKEY_LOCAL_MACHINEConfig0001System
這個鍵保存著系統里打印機的信息
HKEY_LOCAL_MACHINEConfig0001SystemCurrentControlSetControlPrintPrinters
在這個鍵下面,有一個鍵是為系統上每一個打印機設置的,通過控制面板添加和刪除
打印機會調整這個列表
HKEY_LOCAL_MACHINEEnum
Enum鍵包含啟動時發現的硬件設備和那些既插即用卡的信息。Win95使用總線列舉
在啟動時通過不同的.ini文件來檢測硬件信息。那些在啟動時被安裝的和被檢測到的硬件會
顯示在這里。子鍵包括BIOS,ESDI,FLOP,HTREE,ISAPNP,Monitor,Network,Root,
SCSI,和VIRTUAL。子鍵名表示它們各自的硬件設備信息。
HKEY_LOCAL_MACHINEEnumBIOS
BIOS鍵保存著系統中所有即插即用設備的信息。它們用一套代碼數列出,包括每一
個鍵的詳細說明,舉例,*pnp0400是并行口LPT1的鍵。如果LPT1并不具備即插即用功
能,它就會別列入到Enum下的Root鍵中
HKEY_LOCAL_MACHINEEnumRoot
Root鍵包括所有非即插即用設備的信息。在這里,我們可以迅速斷定哪些設備是即插
即用,那些不是。比如SCSI適配器,這個設備必須符合Win95中一個鍵名為ForcedConfig
的硬件設置,這個不會改變。
HKEY_LOCAL_MACHINEEnumNetwork
win95的網絡功能在這個鍵有詳細說明,子鍵包括了每個已經安裝的主要的服務和協
議。
HKEY_LOCAL_MACHINEHARDWARE
hardware子鍵包括了兩個多層的子鍵:DEscriptION鍵,它包含了中央處理器和一個
浮點處理器的信息。還有一個設備映射鍵,它下面的串行鍵列出你所有的com端口。這個
hardware鍵僅保存超級終端程序的信息,及數學處理器和串行口。
HKEY_LOCAL_MACHINENetwork
這個鍵僅保存網絡登陸信息。所有網絡服務細節都保存在
HKEY_LOCAL_MACHINEEnumNetwork這個鍵中。這個鍵有一個子鍵,logon,包括了
lmlogon(本地機器登陸?0=fal1=true)的值,logonvalidated(必須登陸驗證),策略
處理,主登陸方式(Windows登陸,微軟網絡客戶方式等),用戶名和用戶配置。
HKEY_LOCAL_MACHINESECURITY
curity有兩個子鍵,第一個是存取(它最終致使一個遠程鍵列出網絡安全資源,存
取權限等)和提供(包括列出網絡地址和地址服務器),這個鍵被保留用在以后使用高級
安全功能和NT兼容性上
HKEY_LOCAL_MACHINESOFTWARE
這個鍵列出了所有已安裝的32位軟件和程序的.ini文件。它包括了變化,依靠軟件安
裝。那些程序的控制功能在這里的子鍵中列出。多數子鍵簡單的列出了安裝軟件的版本號。
我們在MicrosoftWindowsCurrentVersion下發現了一些有意思的設置,它有如下子
鍵:
hs:你曾經安裝過的所有32位軟件的位置。
s,Compression,ControlsFolder:包括下控制面板象顯示屬性那樣屬性條的
附件。
,explorer:很多有意思的子鍵如NamespacekeysofDesktop和My
Computer----它們指出了回收站和撥號網絡的CLSID行----和提示子鍵可以讓你建立自己
的提示。
ions:一個擴展聯系的列表,當前相關聯的擴展名和比特定的執行文件更適
合的目標類型。
,fontsize,FSTemplates:系統屬性條中所選擇文件系統模板,服務器,桌面
計算機或者筆記本電腦信息。
-DOSEmulation:包括一個應用程序兼容子鍵為大量過時的程序二進制鍵所
設。
-DOSOptions:在dos模式下的設置,如,cd-roms等。
k:網絡驅動的配置。
,Policies:系統管理員認為你不應該去做的事。
eList:所有可以登陸你計算機的用戶名列表。
11.在Windows啟動時運行的程序的神秘之處是它們并不在開始菜單的啟動文件夾
中。它們在HKEY_LOCAL_MACHINEMicrosoftWindowsCurrentVersion下的子鍵中被
執行。
Run:程序在啟動時運行
RunOnce:windows初始化時程序在啟動時只運行一次,這個經常用在當安裝軟件之
后需要重新啟動系統的時候,所以這個鍵一般都是空的。
RunServices:它就象Run一樣,但是包含了“服務”,它不象一般的程序它們是比較
重要的或者是“系統”程序。但是它們不是VXDs,就象McAfee或者RegServ工作一樣。
RunServicesOnce:它只運行一次,但是是“系統自身”的安裝(大量的windows安裝
參數:通常鍵值包括了系統目錄位置,和win95更新,可選項安裝組件,和windows啟動
目錄的子鍵。
注意:在很多黑客木馬軟件中,常常在這里添加鍵值(一般是在Run中),這樣使得
木馬軟件可以隨著windows啟動而啟動并且很隱秘。在這里可以查看不正常的啟動項和去
掉無用的運行程序(比如我就很不喜歡超級解霸的自動伺服器,在這里可以去掉它)。
DLLs:共享DLL的列表,每一個都給出了在一個不可知系統的一個數字等
級。
xtensions:列出了“被認可的”OLE注冊條,和相應的CLSID連接。
crap:這個包含了一個PriorityCacheformats的子鍵,它包括了一個空的有
限值,它更象過去SmartDrive命令行參數的派生。
nes:主鍵值是你現在的時區;子鍵定義了所以可能的時區。
all:這個保存了程序在添加/刪除程序對話框的顯示;子鍵包含了指向反安裝
程序的路徑。和安裝向導相似.......)winlogon(包含了合法登陸布告的文本句)
HKEY_LOCAL_MACHINESYSTEMCurrentControlSet
這個子鍵包括設備驅動和其他服務的描述和控制。不同于windowsnt,win95只包括
限制驅動的控制設置信息。
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControl
這個子鍵包括了win95控制面板中的信息。不要編輯這些信息,因為一些小程序的改
變在很多地方,一個丟失的項會使這個系統變的不穩定
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices
這個鍵包括了所有win95的標準服務。所有被添加的服務和設備,每個標準的服務鍵
包括了它的設置和辨認設置。
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesArbitrators
atbitrators鍵包括了當兩個設備共同占用同樣的設置需要解決的信息。四個子鍵包括
了內存地址,沖突,DMA,I/O端口沖突和IRQ沖突。
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesClass
class鍵包括了所有win95支持的設備class控制,這些和你在添加新硬件出現的硬
件組很類似,還包括了這些設備如何安裝的信息。
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesinetaccs
這個鍵包括了關于這個系統變化的ie附件的可用性,它僅在你安裝過ie2。0或者更
高版本才出現。
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesMSNP32
msnp32描述了客戶機如何在microsoft網絡中實現功能,它包括了認證過程和認證者
的信息。
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesNWNP32
nenp32鍵描述了windows客戶如何在netware網絡中工作功能,它包括了關于認證
過程和證明者的信息。
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesRemoteAccess
在這個鍵里包括需要遠程工作在win95系統上的信息,有認證參數,主機信息,和為
了建立一個撥號連接工作的協議信息。
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesSNMP
這個鍵包括了所以snmp(簡單網絡管理協議)的參數。它包括了允許的管理,配置
陷阱,和有效的團體。
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesVxD
vxd鍵包括了win95中所有32位虛擬設備驅動信息,win95自動管理它們,所以不必
要用注冊表編輯器編輯它們,所以的靜態vxds用子鍵列出。
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesWebPost
webpost鍵包括了所有裝載的internet郵局的設置,如果你連接一個isp,并且它列出
載這里,你應該給自己選則一個服務器。
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesWinsock
這個鍵列出了當連接到internet上winnsock文件的信息,如果列出了不正確的文件,
你將不會連接上internet。
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesWinTrust
wintrust功能是檢查從Internet上下載來的文件是否有病毒,它可以確保你得到干凈
安全的文件。
注冊表(Registry)是微軟公司從Windows95系統開始(至目前最新
Win2000系統依然使用的是它),引入用于代替原先Win32系統里.ini
文件,管理配置系統運行參數的一個全新的核心數據庫。在這個數據
庫里整合集成了全部系統和應用程序的初始化信息;其中包含了硬件
設備的說明、相互關聯的應用程序與文檔文件、窗口顯示方式、網絡
連接參數、甚至有關系到計算機安全的網絡享設置。它與老的win32
系統里的ini文件相比,具有方便管理,安全性較高、適于網絡操作
等特點。
在形式上,注冊表與INI文件有兩個顯著的特點:
1.注冊表采用的是二進制形式登錄數據,INI文件采用的則是簡
單的文本形式登錄數據
2.注冊表支持子關鍵字,各級子關鍵字都有自己的“鍵值”,INI文
件中則支持節以及節中的參數。
在功能上,注冊表與.INI文件相比,主要有以下三個特點:
1.注冊表允許對硬件、某些操作系統參數、應用程序和設備驅動
程序進行跟蹤配置,這使得某些配置的改變可以在不重新啟動系統的
情況下立即生效。
2.注冊表中登錄的硬件部分數據可以用來支持Win95的即插即
用特性。當Win95檢測到機器上的各種設備時,就把有關數據保存
到注冊表中。通常是在安裝時進行這種檢測的,但Win95啟動或原
有配置改變時,也要進行檢測。如安裝一個新的硬件時,Win95將檢
查注冊表,以便確定哪些資源已被占用,這樣就可以避免新設備與原
有設備之間的資源沖突。
3.通過注冊表,管理人員和用戶可以在網絡上檢查系統的配置和
設置,使得遠程管理得以實現。
預定義關鍵字
注冊表采用“關鍵字”及其“鍵值”來描述登錄項及其數據。所有的
關鍵字都是以“HKEY”作為前綴開頭。實際上,關鍵字是一個句柄。
這種約定使得應用程序開發人員可以在使用注冊表API時把它用于
程序之中。為此,Win95提供了若干API函數,以便在開發Win95
應用程序時添加、修改、查詢和刪除注冊表的登錄項。關鍵字可以分
為兩類:一類是由系統定義的,通常稱為“預定義關鍵字”;另一類是
由應用程序定義的,安裝的應用軟件不同,其登錄項也就不同。
由于注冊表保存的信息中,含有許多系統啟動時必要的參數,一
旦出現問題將導致系統崩潰等嚴重后果,此外由于注冊表里含有許多
的無法通過操作系統本身進行操作的系統參數,因此了解并學會使用
注冊表,對每一個老鳥來講都是一件不可缺少。
HKEY_LOCAL_MACHINE
目錄
概念
描述
編輯本段概念
HKEY_LOCAL_MACHINE保存了注冊表里的所有與這臺計
算機有關的配置信息,只是一個公共配置信息單元,對于讀者來
說,只需做一個大致的了解即可。
HKEY_LOCAL_MACHINE根鍵包含5個子鍵,分別為
Hardware子鍵、Sam子鍵、Security子鍵、Software子鍵和
System子鍵。
編輯本段描述
HKEY_LOCAL_MACHINE是一個顯示控制系統和軟件的處
理鍵。HKLM鍵保存著計算機的系統信息。它包括網絡和硬件上
所有的軟件設置。(比如文件的位置,注冊和未注冊的狀態,版
本號等等)這些設置和用戶無關,因為這些設置是針對使用這個
系統的所有用戶的。
HKEY_LOCAL_MACHINEAppEvents
為了以后在客戶機上運行客戶機/服務器這樣的應用程序,在
Win95/98中AppEvents鍵是空的。應用程序實際上都駐留網絡
服務器上,這些鍵會保存部分指針。
HKEY_LOCAL_MACHINEConfig
這個鍵保存著你計算機上所有不同的硬件設置(這些從控制
面板的系統屬性中硬件配置文件中可以創建)。這些配置在啟動
時通常被復制到HKCC。每個配置會被用一個鍵(比如0001或
者0002等等)來保存,每個都是一個獨立的配置。如果你只有
一個單一的配置,那就只會有0001這個鍵
HKEY_LOCAL_MACHINEConfig0001Display
這個鍵表示顯示的設置,如熒屏字體,窗體大小,窗體位置
和分辨率等
一個小技巧:當設置了計算機不支持的大分辨率導致
Windows不能啟動時(黑屏),可以修改分辨率來解決。進入安全
模式,運行,在這個鍵的Resolution鍵值中把數據
值修改為640,480或者800,600這樣的低分辨率,然后重新啟動
計算機即可。
HKEY_LOCAL_MACHINEConfig0001System
這個鍵保存著系統里打印機的信息
HKEY_LOCAL_MACHINEConfig0001SystemCurrentControl
SetControlPrintPrinters
在這個鍵下面,有一個鍵是為系統上每一個打印機設置的,
通過控制面板添加和刪除打印機會調整這個列表
HKEY_LOCAL_MACHINEEnum
Enum鍵包含啟動時發現的硬件設備和那些既插即用卡的信
息。Win95使用總線列舉在啟動時通過不同的.ini文件來檢測硬
件信息。那些在啟動時被安裝的和被檢測到的硬件會顯示在這
里。子鍵包括BIOS,ESDI,FLOP,HTREE,ISAPNP,Monitor,
Network,Root,SCSI,和VIRTUAL。子鍵名表示它們各自的硬
件設備信息。
HKEY_LOCAL_MACHINEEnumBIOS
BIOS鍵保存著系統中所有即插即用設備的信息。它們用一
套代碼數列出,包括每一個鍵的詳細說明,舉例,*pnp0400是
并行口LPT1的鍵。如果LPT1并不具備即插即用功能,它就會
別列入到Enum下的Root鍵中
HKEY_LOCAL_MACHINEEnumRoot
Root鍵包括所有非即插即用設備的信息。在這里,我們可以
迅速斷定哪些設備是即插即用,那些不是。比如SCSI適配器,
這個設備必須符合Win95中一個鍵名為ForcedConfig的硬件設
置,這個不會改變。
HKEY_LOCAL_MACHINEEnumNetwork
win95的網絡功能在這個鍵有詳細說明,子鍵包括了每個已
經安裝的主要的服務和協議。
HKEY_LOCAL_MACHINEHARDWARE
hardware子鍵包括了兩個多層的子鍵:DESCRIPTION鍵,
它包含了中央處理器和一個浮點處理器的信息。還有一個設備映
射鍵,它下面的串行鍵列出你所有的com端口。這個hardware
鍵僅保存超級終端程序的信息,及數學處理器和串行口。
HKEY_LOCAL_MACHINENetwork
這個鍵僅保存網絡登陸信息。所有網絡服務細節都保存在
HKEY_LOCAL_MACHINEEnumNetwork這個鍵中。這個鍵有
一個子鍵,logon,包括了lmlogon(本地機器登陸?0=fal
1=true)的值,logonvalidated(必須登陸驗證),策略處理,主
登陸方式(Windows登陸,微軟網絡客戶方式等),用戶名和用
戶配置。
HKEY_LOCAL_MACHINESECURITY
curity有兩個子鍵,第一個是存取(它最終致使一個遠程
鍵列出網絡安全資源,存取權限等)和提供(包括列出網絡地址
和地址服務器),這個鍵被保留用在以后使用高級安全功能和NT
兼容性上
HKEY_LOCAL_MACHINESOFTWARE
這個鍵列出了所有已安裝的32位軟件和程序的.ini文件。它
包括了變化,依靠軟件安裝。那些程序的控制功能在這里的子鍵
中列出。多數子鍵簡單的列出了安裝軟件的版本號。
我們在MicrosoftWindowsCurrentVersion下發現了一些
有意思的設置,它有如下子鍵:
hs:你曾經安裝過的所有32位軟件的位置。
s,Compression,ControlsFolder:包括下控制面
板象顯示屬性那樣屬性條的附件。
,explorer:很多有意思的子鍵如Namespacekeys
ofDesktop和MyComputer----它們指出了回收站和撥號網絡的
CLSID行----和提示子鍵可以讓你建立自己的提示。
ions:一個擴展聯系的列表,當前相關聯的擴展名
和比特定的執行文件更適合的目標類型。
,fontsize,FSTemplates:系統屬性條中所選擇文件
系統模板,服務器,桌面計算機或者筆記本電腦信息。
-DOSEmulation:包括一個應用程序兼容子鍵為大量
過時的程序二進制鍵所設。
-DOSOptions:在dos模式下的設置,如,
cd-roms等。
k:網絡驅動的配置。
,Policies:系統管理員認為你不應該去做的事。
eList:所有可以登陸你計算機的用戶名列表。
11.在Windows啟動時運行的程序的神秘之處是它們并不在
開始菜單的啟動文件夾中。它們在
HKEY_LOCAL_MACHINEMicrosoftWindowsCurrentVersion
下的子鍵中被執行。
Run:程序在啟動時運行
RunOnce:windows初始化時程序在啟動時只運行一次,這
個經常用在當安裝軟件之后需要重新啟動系統的時候,所以這個
鍵一般都是空的。
RunServices:它就象Run一樣,但是包含了“服務”,它不
象一般的程序它們是比較重要的或者是“系統”程序。但是它們不
是VXDs,就象McAfee或者RegServ工作一樣。
RunServicesOnce:它只運行一次,但是是“系統自身”的安
裝(大量的windows安裝參數:通常鍵值包括了系統目錄位置,
和win95更新,可選項安裝組件,和windows啟動目錄的子鍵。
注意:在很多黑客木馬軟件中,常常在這里添加鍵值(一般
是在Run中),這樣使得木馬軟件可以隨著windows啟動而啟動
并且很隱秘。在這里可以查看不正常的啟動項和去掉無用的運行
程序(比如我就很不喜歡超級解霸的自動伺服器,在這里可以去
掉它)。
DLLs:共享DLL的列表,每一個都給出了在一個
不可知系統的一個數字等級。
xtensions:列出了“被認可的”OLE注冊條,和相應
的CLSID連接。
crap:這個包含了一個PriorityCacheformats的子
鍵,它包括了一個空的有限值,它更象過去SmartDrive命令行
參數的派生。
nes:主鍵值是你現在的時區;子鍵定義了所以
可能的時區。
all:這個保存了程序在添加/刪除程序對話框的顯
示;子鍵包含了指向反安裝程序的路徑。和安裝向導相似.......)
winlogon(包含了合法登陸布告的文本句)
HKEY_LOCAL_MACHINESYSTEMCurrentControlSet
這個子鍵包括設備驅動和其他服務的描述和控制。不同于
windowsnt,win95只包括限制驅動的控制設置信息。
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControl
這個子鍵包括了win95控制面板中的信息。不要編輯這些信
息,因為一些小程序的改變在很多地方,一個丟失的項會使這個
系統變的不穩定
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetService
s
這個鍵包括了所有win95的標準服務。所有被添加的服務和
設備,每個標準的服務鍵包括了它的設置和辨認設置。
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetService
sArbitrators
atbitrators鍵包括了當兩個設備共同占用同樣的設置需要解
決的信息。四個子鍵包括了內存地址,沖突,DMA,I/O端口沖
突和IRQ沖突。
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetService
sClass
class鍵包括了所有win95支持的設備class控制,這些
和你在添加新硬件出現的硬件組很類似,還包括了這些設備如何
安裝的信息。
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetService
sinetaccs
這個鍵包括了關于這個系統變化的ie附件的可用性,它僅在
你安裝過ie2。0或者更高版本才出現。
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetService
sMSNP32
msnp32描述了客戶機如何在microsoft網絡中實現功能,它
包括了認證過程和認證者的信息。
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetService
sNWNP32
nenp32鍵描述了windows客戶如何在netware網絡中工作
功能,它包括了關于認證過程和證明者的信息。
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetService
sRemoteAccess
在這個鍵里包括需要遠程工作在win95系統上的信息,有認
證參數,主機信息,和為了建立一個撥號連接工作的協議信息。
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetService
sSNMP
這個鍵包括了所以snmp(簡單網絡管理協議)的參數。它
包括了允許的管理,配置陷阱,和有效的團體。
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetService
sVxD
vxd鍵包括了win95中所有32位虛擬設備驅動信息,win95
自動管理它們,所以不必要用注冊表編輯器編輯它們,所以的靜
態vxds用子鍵列出。
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetService
sWebPost
webpost鍵包括了所有裝載的internet郵局的設置,如果你
連接一個isp,并且它列出載這里,你應該給自己選則一個服務
器。
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetService
sWinsock
這個鍵列出了當連接到internet上winnsock文件的信息,
如果列出了不正確的文件,你將不會連接上internet。
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetService
sWinTrust
wintrust功能是檢查從Internet上下載來的文件是否有病
毒,它可以確保你得到干凈安全的文件。
什么是注冊表?
注冊表因為它復雜的結構和沒有任何聯系的CLSID鍵使得
它可能看上去很神秘。不幸的是,微軟并沒有完全公開講述
關于注冊表正確設置的支持信息,這樣使得注冊表看上去更
不可琢磨。處理和編輯注冊表如同“黑色藝術”一樣,它在系
統中的設置讓用戶感覺象在黑暗中摸索一樣找不到感覺。這
樣,因為用戶對這方面的缺乏了解使得注冊表更多的出現故
障。
Windows注冊表是幫助Windows控制硬件、軟件、用戶環
境和Windows界面的一套數據文件,注冊表包含在Windows
目錄下兩個文件和里,還有它們的備份
0和0。通過Windows目錄下的
程序可以存取注冊表數據庫。在以前,在windows
的更早版本(在win95以前),這些功能是靠,
和其他和應用程序有關聯的.ini文件來實現的.
在windows操作系統家族中,和這兩個文
件包含了操作系統所有的控制功能和應用程序的信息,
管理計算機硬件而管理桌面和應用程序。
所有驅動、字體、設置和參數會保存在.ini文件中,任何新程
序都會被記錄在.ini文件中。這些記錄會在程序代碼中被引
用。因為受和文件大小的限制,程序員添
加輔助的.INI文件以用來控制更多的應用程序。舉例來說,
微軟的Excel有一個文件,它包含著選項、設置、
缺省參數和其他關系到Excel運行正常的信息。在
和中只需要指出的路徑和文件名即可。
最開始,和控制著所有windows和應用程
序的特征和存取方法,它在少數的用戶和少數應用程序的環
境中工作的很好。隨著應用程序的數量和復雜性越來越大,
則需要在.ini文件中添加更多的參數項。這樣下來,在一個變
化的環境中,在應用程序安裝到系統中后,每個人都會更
改.ini文件。然而,沒有一個人在刪除應用程序后刪除.ini文
件中的相關設置,所以和這個兩個文件會
變的越來越大。每增加的內容會導致系統性能越來越慢。而
且每次應用程序的升級都出現這樣的難題:升級會增加更多
的參數項但是從來不去掉舊的設置。而且還有一個明顯的問
題,一個.ini文件的最大尺寸是64KB。為了解決這個問題,
軟件商自己開始支持自己的.ini文件,然后指向特定的ini文
件如和文件。這樣下來多個.ini文件影響
了系統正常的存取級別設置。如果一個應用程序的.ini文件和
文件設置起沖突,究竟是誰的優先級更高呢?
注冊表最初被設計為一個應用程序的數據文件相關參考文
件,最后擴展成對于32位操作系統和應用程序包括了所有功
能下的東東.注冊表是一套控制操作系統外表和如何響應外
來事件工作的文件。這些“事件”的范圍從直接存取一個硬件
設備到接口如何響應特定用戶到應用程序如何運行等等。注
冊表因為它的目的和性質變的很復雜,它被設計為專門為32
位應用程序工作,文件的大小被限制在大約40MB。
注冊表都做些什么?
注冊表是為WindowsNT和Windows95中所有32位硬件/
驅動和32位應用程序設計的數據文件。16位驅動在Winnt
下無法工作,所以所有設備都通過注冊表來控制,一般這些
是通過BIOS來控制的。在Win95下,16位驅動會繼續以實
模式方式設備工作,它們使用來控制。16位應用
程序會工作在NT或者Win95下,它們的程序仍然會參考
和文件獲得信息和控制。
在沒有注冊表的情況下,操作系統不會獲得必須的信息來運
行和控制附屬的設備和應用程序及正確響應用戶的輸入。
在系統中注冊表是一個記錄32位驅動的設置和位置的數據
庫。當操作系統需要存取硬件設備,它使用驅動程序,甚至
設備是一個BIOS支持的設備。無BIOS支持設備安裝時必
須需要驅動,這個驅動是獨立于操作系統的,但是操作系統
需要知道從哪里找到它們,文件名、版本號、其他設置和信
息,沒有注冊表對設備的記錄,它們就不能被使用。
當一個用戶準備運行一個應用程序,注冊表提供應用程序信
息給操作系統,這樣應用程序可以被找到,正確數據文件的
位置被規定,其他設置也都可以被使用。
注冊表保存關于缺省數據和輔助文件的位置信息、菜單、按
鈕條、窗口狀態和其他可選項。它同樣也保存了安裝信息(比
如說日期),安裝軟件的用戶,軟件版本號和日期,序列號等。
根據安裝軟件的不同,它包括的信息也不同。
然而,一般來說,注冊表控制所有32位應用程序和驅動,控
制的方法是基于用戶和計算機的,而不依賴于應用程序或驅
動,每個注冊表的參數項控制了一個用戶的功能或者計算機
功能。用戶功能可能包括了桌面外觀和用戶目錄。所以,計
算機功能和安裝的硬件和軟件有關,對所以用戶來說項都是
公用的。
有些程序功能對用戶有影響,有些時作用于計算機而不是為
個人設置的,同樣的,驅動可能是用戶指定的,但在很多時
候,它們在計算機中是通用的。
注冊表控制用戶模式的例子有:
控制面板功能;
桌面外觀和圖標;
網絡參數;
瀏覽器功能性和特征;
那些功能中的某些是和用戶無關的,有些是針對用戶的。
計算機相關控制項基于計算機名,和登陸用戶無關。控制類
型的例子是安裝一個應用程序,不管是哪個用戶,程序的可
用性和存取是不變的,然而,運行程序圖標依賴于網絡上登
陸的用戶。網絡協議可用性和優先權基于計算機,但是當前
連接和用戶信息相關。
這里是在注冊表中基與計算機控制條目的一些例子:
存取控制;
登陸確認;
文件和打印機共享;
網卡設置和協議;
系統性能和虛擬內存設置;
沒有了注冊表,Win95和Winnt就不太可能存在。它們實在
太復雜了,以致于用過去的.ini文件無法控制,它們的擴展能
力需要幾乎無限制的安裝和使用應用程序,注冊表實現了它。
然而,注冊表比.ini文件更復雜,理解它如何工作,它做什么
和如何用它來做是有效管理系統的關鍵。
在系統中注冊表控制所有32位應用程序和它們的功能及多
個應用程序的交互,比如復制和粘貼,它也控制所有的硬件
和驅動程序。雖然多數可以通過控制面板來安裝和設置,理
解注冊表仍是做Winnt和Win95系統管理基本常識。
二、注冊表的結構
注冊表的結構
注冊表是Windows程序員建造的一個復雜的信息數據庫,它
是多層次式的。在不同系統上注冊表的基本結構相同。其中
的復雜數據會在不同方式上結合,從而產生出一個絕對唯一
的注冊表。
計算機配置和缺省用戶設置的注冊表數據在Winnt中被保存
在下面這五個文件中:
DEFAULT,SAM,SECURITY,SOFTWARE,SYSTEM,
。
Win95中所有系統注冊信息保存在windows目錄下的
文件里。所有硬件設置和軟件信息也保存在這
個文件。它要比NT注冊表文件簡單的多,因為這里并不需
要更多的控制。Win95被設計為一個網絡的客戶或者單獨工
作的系統,所以用戶控制或者安全級別和NT不一樣。這使
得Win95注冊表工作比NT更容易,所以這個文件也比較小。
Win95用戶的注冊數據一般被保存在windows目錄下的
里。如果你在控制面板|密碼|用戶配置文件中創建并
使用多于一個用戶的配置文件,每個用戶就會有在
下它自己的
文件。在啟動時,系統將記錄你的登陸,從你目錄
中的配置文件(信息)將被裝入,以用來保持你
自己的桌面和圖標。
控制鍵
在注冊表編輯器中注冊表項是用控制鍵來顯示或者編輯的。
控制鍵使得找到和編輯信息項組更容易。因此,注冊表使用
這些條目。下面是六個控制鍵
HKEY_LOCAL_MACHINE
HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_DYN_DATA
HKEY_USERS
HKEY_CURRENT_USER
Winnt和Win95的注冊表并不兼容。從Win95向Winnt升級
需要你重新安裝32位應用程序,重新在桌面上創建圖標,并
重新建立用戶環境。
通過控制鍵可以比較容易編輯注冊表。雖然它們顯示和編輯
好象獨立的鍵,其實HKEY_CLASSES_ROOT和
HKEY_CURRENT_CONFIG是HKEY_LOCAL_MACHINE
的一部分。HKEY_CURRENT_USER是HKEY_USERS的一
部分。
HKEY_LOCAL_MACHINE包含了HKEY_CLASSES_ROOT
和HKEY_CURRENT_CONFIG的所有內容。每次計算機啟
動時,HKEY_CURRENT_CONFIG和
HKEY_CLASSES_ROOT的信息被映射用以查看和編輯。
HKEY_CLASSES_ROOT其實就是
HKEY_LOCAL_MACHINESOFTWAREClass,但是在
HKEY_CLASSES_ROOT窗編輯相對來說顯得更容易和有條
理。
HKEY_USERS保存著缺省用戶信息和當前登陸用戶信息。
當一個域成員計算機啟動并且一個用戶登陸,域控制器自動
將信息發送到HKEY_CURRENT_USER里,而且
HKEY_CURRENT_USER信息被映射到系統內存中。其他用
戶的信息并不發送到系統,而是記錄在域控制器里。
鍵和子鍵
數據被分割成多層次的鍵和子鍵,建立分層次(就象Exploer
一樣)結構更易于編輯。每個鍵有成組的信息而且根據在其
中的數據類型被命名。每個鍵在它的文件夾圖標上都有一個
加號(+)標志子鍵說明在它下面還有更多內容的東西。當點
開它的時候,文件夾的加號標志被替換成一個減號(-)標志,
然后顯示出下一級的子鍵。
所有軟件,硬件,windows工作的設置都存放在
HKEY_LOCAL_MACHINE。所有安全策略,用戶權限和共享
信息也包括在這個鍵中。用戶權限,安全策略,共享信息可
以通過WindowsNT域用戶管理器,Explorer和Win95中控
制面板來設置。
HKEY_CLASSES_ROOT
HKEY_CLASSES_ROOT包含了所有應用程序運行時必需的
信息:
在文件和應用程序之間所有的擴展名和關聯;
所有的驅動程序名稱;
類的ID數字(所要存取項的名字用數字來代替);
DDE和OLE的信息;
用于應用程序和文件的圖標;
HKEY_CURRENT_CONFIG.
HKEY_CURRENT_CONFIG是在HKEY_LOCAL_MACHINE
中當前硬件配置信息的映射。如果系統只有一個配置文件,
也就是原始配置,數據將一直在同樣的地方。在控制面板|
系統|硬件配置文件|創建一個額外的配置使額外配置信息放
入HKEY_LOCAL_MACHINE。當Win95中存在多個配置文
件時,當每次計算機啟動時將給出一個提示讓你選擇一個配
置文件。在Winnt中,在啟動時你可以按空格鍵來選擇上次
正常啟動時硬件配置文件。根據硬件配置文件選擇的不同,
特定的信息被映射到HKEY_CURRENT_CONFIG。
HKEY_DYN_DATA
HKEY_DYN_DATA和其他的注冊表控制鍵不同,因為實際上
它并不被寫入硬盤驅動器中。Win95的一個優點是,在系統
啟動時HKEY_DYN_DATA這個控制鍵儲存收集到的即插即
用信息并配置它們。它保存在內存中,Win95用它來控制硬
件。因為是在內存中,所以它不從硬盤中讀取,每次當你啟
動計算機時,配置都有可能會不一樣。在啟動時Win95必須
計算超過1600種可能的配置。所以,如果系統改變既定的
設置而沒有報告給Win95那么潛在的問題就可能發生。系統
大多數時間工作良好,但是并非一直如此。
HKEY_USERS
HKEY_USERS僅包含了缺省用戶設置和登陸用戶的信息。
雖然它包含了所有獨立用戶的設置,但在用戶未登陸網絡時
用戶的設置是不可用的。這些設置告訴系統哪些圖標會被使
用,什么組可用,哪個開始菜單可用,哪些顏色和字體可用,
和控制面板上什么選項和設置可用。
HKEY_CURRENT_USER
用來保存當前用戶和缺省用戶的信息,
HKEY_CURRENT_USER僅映射當前登陸用戶的信息。
各主鍵的簡單介紹
HKEY_LOCAL_MACHINE
HKEY_LOCAL_MACHINE是一個顯示控制系統和軟件的處
理鍵。HKLM鍵保存著計算機的系統信息。它包括網絡和硬
件上所有的軟件設置。(比如文件的位置,注冊和未注冊的狀
態,版本號等等)這些設置和用戶無關,因為這些設置是針
對使用這個系統的所有用戶的。
HKEY_LOCAL_MACHINEAppEvents
為了以后在瘦客戶機上運行客戶機/服務器這樣的應用程
序,在Win95/98中AppEvents鍵是空的。應用程序實際上
都駐留網絡服務器上,這些鍵會保存部分指針。
HKEY_LOCAL_MACHINEConfig
這個鍵保存著你計算機上所有不同的硬件設置(這些從控制
面板的系統屬性中硬件配置文件中可以創建)。這些配置在啟
動時通常被復制到HKCC。每個配置會被用一個鍵(比如
0001或者0002等等)來保存,每個都是一個獨立的配置。
如果你只有一個單一的配置,那就只會有0001這個鍵
HKEY_LOCAL_MACHINEConfig0001Display
這個鍵表示顯示的設置,如熒屏字體,窗體大小,窗體位置
和分辨率等
一個小技巧:當設置了計算機不支持的大分辨率導致
Windows不能啟動時(黑屏),可以修改分辨率來解決。進入
安全模式,運行,在這個鍵的Resolution鍵值中
把數據值修改為640,480或者800,600這樣的低分辨率,然
后重新啟動計算機即可。
HKEY_LOCAL_MACHINEConfig0001System
這個鍵保存著系統里打印機的信息
HKEY_LOCAL_MACHINEConfig0001SystemCurrentCon
trolSetControlPrintPrinters
在這個鍵下面,有一個鍵是為系統上每一個打印機設置的,
通過控制面板添加和刪除打印機會調整這個列表
HKEY_LOCAL_MACHINEEnum
Enum鍵包含啟動時發現的硬件設備和那些既插即用卡的信
息。Win95使用總線列舉在啟動時通過不同的.ini文件來檢
測硬件信息。那些在啟動時被安裝的和被檢測到的硬件會顯
示在這里。子鍵包括BIOS,ESDI,FLOP,HTREE,ISAPNP,
Monitor,Network,Root,SCSI,和VIRTUAL。子鍵名表示
它們各自的硬件設備信息。
HKEY_LOCAL_MACHINEEnumBIOS
BIOS鍵保存著系統中所有即插即用設備的信息。它們用一套
代碼數列出,包括每一個鍵的詳細說明,舉例,*pnp0400是
并行口LPT1的鍵。如果LPT1并不具備即插即用功能,它
就會別列入到Enum下的Root鍵中
HKEY_LOCAL_MACHINEEnumRoot
Root鍵包括所有非即插即用設備的信息。在這里,我們可以
迅速斷定哪些設備是即插即用,那些不是。比如SCSI適配
器,這個設備必須符合Win95中一個鍵名為ForcedConfig
的硬件設置,這個不會改變。
HKEY_LOCAL_MACHINEEnumNetwork
win95的網絡功能在這個鍵有詳細說明,子鍵包括了每個已
經安裝的主要的服務和協議。
HKEY_LOCAL_MACHINEHARDWARE
hardware子鍵包括了兩個多層的子鍵:DESCRIPTION鍵,
它包含了中央處理器和一個浮點處理器的信息。還有一個設
備映射鍵,它下面的串行鍵列出你所有的com端口。這個
hardware鍵僅保存超級終端程序的信息,及數學處理器和串
行口。
HKEY_LOCAL_MACHINENetwork
這個鍵僅保存網絡登陸信息。所有網絡服務細節都保存在
HKEY_LOCAL_MACHINEEnumNetwork這個鍵中。這個鍵
有一個子鍵,logon,包括了lmlogon(本地機器登陸?0=fal
1=true)的值,logonvalidated(必須登陸驗證),策略處理,
主登陸方式(Windows登陸,微軟網絡客戶方式等),用戶
名和用戶配置。
HKEY_LOCAL_MACHINESECURITY
curity有兩個子鍵,第一個是存取(它最終致使一個遠程
鍵列出網絡安全資源,存取權限等)和提供(包括列出網絡
地址和地址服務器),這個鍵被保留用在以后使用高級安全功
能和NT兼容性上
HKEY_LOCAL_MACHINESOFTWARE
這個鍵列出了所有已安裝的32位軟件和程序的.ini文件。它
包括了變化,依靠軟件安裝。那些程序的控制功能在這里的
子鍵中列出。多數子鍵簡單的列出了安裝軟件的版本號。
我們在MicrosoftWindowsCurrentVersion下發現了一些
有意思的設置,它有如下子鍵:
hs:你曾經安裝過的所有32位軟件的位置。
s,Compression,ControlsFolder:包括下控制面
板象顯示屬性那樣屬性條的附件。
,explorer:很多有意思的子鍵如Namespacekeys
ofDesktop和MyComputer----它們指出了回收站和撥號網
絡的CLSID行----和提示子鍵可以讓你建立自己的提示。
ions:一個擴展聯系的列表,當前相關聯的擴展名
和比特定的執行文件更適合的目標類型。
,fontsize,FSTemplates:系統屬性條中所選擇文件
系統模板,服務器,桌面計算機或者筆記本電腦信息。
-DOSEmulation:包括一個應用程序兼容子鍵為大量
過時的程序二進制鍵所設。
-DOSOptions:在dos模式下的設置,如,
cd-roms等。
k:網絡驅動的配置。
,Policies:系統管理員認為你不應該去做的事。
eList:所有可以登陸你計算機的用戶名列表。
11.在Windows啟動時運行的程序的神秘之處是它們并不在
開始菜單的啟動文件夾中。它們在
HKEY_LOCAL_MACHINEMicrosoftWindowsCurrentVersi
on下的子鍵中被執行。
Run:程序在啟動時運行
RunOnce:windows初始化時程序在啟動時只運行一次,這
個經常用在當安裝軟件之后需要重新啟動系統的時候,所以
這個鍵一般都是空的。
RunServices:它就象Run一樣,但是包含了“服務”,它不
象一般的程序它們是比較重要的或者是“系統”程序。但是它
們不是VXDs,就象McAfee或者RegServ工作一樣。
RunServicesOnce:它只運行一次,但是是“系統自身”的安
裝(大量的windows安裝參數:通常鍵值包括了系統目錄位
置,和win95更新,可選項安裝組件,和windows啟動目錄
的子鍵。
注意:在很多黑客木馬軟件中,常常在這里添加鍵值(一般
是在Run中),這樣使得木馬軟件可以隨著windows啟動而
啟動并且很隱秘。在這里可以查看不正常的啟動項和去掉無
用的運行程序(比如我就很不喜歡超級解霸的自動伺服器,
在這里可以去掉它)。
DLLs:共享DLL的列表,每一個都給出了在一個
不可知系統的一個數字等級。
xtensions:列出了“被認可的”OLE注冊條,和相應
的CLSID連接。
crap:這個包含了一個PriorityCacheformats的子
鍵,它包括了一個空的有限值,它更象過去SmartDrive命令
行參數的派生。
nes:主鍵值是你現在的時區;子鍵定義了所以
可能的時區。
all:這個保存了程序在添加/刪除程序對話框的顯
示;子鍵包含了指向反安裝程序的路徑。和安裝向導相
似.......)winlogon(包含了合法登陸布告的文本句)
HKEY_LOCAL_MACHINESYSTEMCurrentControlSet
這個子鍵包括設備驅動和其他服務的描述和控制。不同于
windowsnt,win95只包括限制驅動的控制設置信息。
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetCon
trol
這個子鍵包括了win95控制面板中的信息。不要編輯這些信
息,因為一些小程序的改變在很多地方,一個丟失的項會使
這個系統變的不穩定
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSer
vices
這個鍵包括了所有win95的標準服務。所有被添加的服務和
設備,每個標準的服務鍵包括了它的設置和辨認設置。
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSer
vicesArbitrators
atbitrators鍵包括了當兩個設備共同占用同樣的設置需要解
決的信息。四個子鍵包括了內存地址,沖突,DMA,I/O端
口沖突和IRQ沖突。
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSer
vicesClass
class鍵包括了所有win95支持的設備class控制,這些和
你在添加新硬件出現的硬件組很類似,還包括了這些設備如
何安裝的信息。
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSer
vicesinetaccs
這個鍵包括了關于這個系統變化的ie附件的可用性,它僅在
你安裝過ie2。0或者更高版本才出現。
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSer
vicesMSNP32
msnp32描述了客戶機如何在microsoft網絡中實現功能,它
包括了認證過程和認證者的信息。
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSer
vicesNWNP32
nenp32鍵描述了windows客戶如何在netware網絡中工作
功能,它包括了關于認證過程和證明者的信息。
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSer
vicesRemoteAccess
在這個鍵里包括需要遠程工作在win95系統上的信息,有認
證參數,主機信息,和為了建立一個撥號連接工作的協議信
息。
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSer
vicesSNMP
這個鍵包括了所以snmp(簡單網絡管理協議)的參數。它
包括了允許的管理,配置陷阱,和有效的團體。
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSer
vicesVxD
vxd鍵包括了win95中所有32位虛擬設備驅動信息,win95
自動管理它們,所以不必要用注冊表編輯器編輯它們,所以
的靜態vxds用子鍵列出。
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSer
vicesWebPost
webpost鍵包括了所有裝載的internet郵局的設置,如果你
連接一個isp,并且它列出載這里,你應該給自己選則一個服
務器。
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSer
vicesWinsock
這個鍵列出了當連接到internet上winnsock文件的信息,如
果列出了不正確的文件,你將不會連接上internet。
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSer
vicesWinTrust
wintrust功能是檢查從Internet上下載來的文件是否有病
毒,它可以確保你得到干凈安全的文件。
HKEY_CLASSES_ROOT
在注冊表中HKEY_CLASSES_ROOT是系統中控制所有數
據文件的項。這個在Win95和Winnt中是相通的。
HKEY_CLASSES_ROOT控制鍵包括了所有文件擴展和所有
和執行文件相關的文件。它同樣也決定了當一個文件被雙擊
時起反應的相關應用程序。
HKEY_CLASSES_ROOT被用作程序員在安裝軟件時方便的
發送信息,在Win95和Winnt中,HKEY_CLASSES_ROOT
和HKEY_LOCAL_MACHINESoftwareClass是相同的。
程序員在運行他們的啟動程序時不需要擔憂實際的位置,相
反的,他們只需要在HKEY_CLASSES_ROOT中加入數據就
可以了。
在Windows用戶圖形界面下,每件事----每個文件,每個目
錄,每個小程序,每個連接,每個驅動---都被看做一個對象;
每個對象都有確定的屬性和它聯系。HKCR包含著對象類型
和它們屬性的列表。HKCR主要的功能被設置為:
一個對象類型和一個文件擴展名關聯
一個對象類型和一種圖標關聯
一個對象類型和一個命令行動作的關聯
定義對象類型相關菜單選項和定義每一個對象類型屬性選
項
在Win95中,相關菜單就是當你鼠標右擊一個對象時所彈出
的菜單;屬性就是當你選擇屬性項后一個展開的對話框。用
簡單術語來說就是在改變HKCR中的設置可以改變一個給定
文件擴展名缺省的關聯。改變一個文件類型的缺省圖標,和
添加或者刪除給定對象類型的彈出菜單內容(或者所有的對
象類型)
HKCR包括了三種基本類型的子鍵
???或者文件擴展名子鍵
文件擴展名子鍵在彈出菜單上連接文件擴展名到對象類型和
相關操作,屬性項,和相關操作。
object類型子鍵
對象類型子鍵定義了一個對象類型在它缺省圖標的項,它的
彈出菜單和屬性項,它的相關操作和它的CLSID連接。
CLSID子鍵
在Windows下每件事都被用一個數字取代它的名字來對
待。就象人往往是用名字來處理事情一樣。CLSID是標識所
有列出的圖標,應用程序,目錄,文件類型等等對象的數字。
是微軟為制造商分配的,每一個都必須是唯一的。制造商將
CLSID放入安裝程序文件這樣就可以在安裝時更新注冊表。
注冊表是應用程序進行時它們需要關于做什么的指示的數據
庫。比如說,假定你有一個微軟Excel7電子數據表的Word
7文檔,當你在Word中雙擊這個電子數據表,應用程序菜
單就會變成Excel的菜單而且電子數據表進入編輯狀態,就
好象你在Excel中一樣。它是如何知道該做什么呢?每個
Excel7創建的文件都有Excel的CLSID連接。Word讀這個
CLSID后,到注冊表中尋找指示,依賴CLSID下的數據運
行.DLL文件或者應用程序。
CLSID子鍵為對象類型提供了OLE和DDE信息和圖標。相
關菜單,或者包含在它子鍵中的屬性項信息。這個可能是多
數讓人看到后覺得“恐怖”的鍵。每個CLSID數必須是唯一的,
實際上,為了這個目的微軟已經出產了CLSID-產生程序--這
個結果導致你往往得到32位16進制的數字串,除非你是程
序員,否則多數部分鍵看起來是很枯燥的。它們包括內存管
理模式,客戶機/服務器配置,和OLE處理的.dll連接。
關于子鍵的一點注解
1)shell:Shell鍵有個一”action“子鍵,如同”open“一樣,這里
有一個command子鍵;command子鍵有一個缺省句值,它
包含了運行程序的命令行。將一個”open“子鍵放在一個對象
類型的shell子鍵中會在這個對象類型的彈出菜單上多出一
個”open“選項,給這個open子鍵一個command(缺省命令
行"C:%1")子鍵會使得打開這個對
象類型時使用筆記本做為缺省應用程序。其他操作選項包括
View,Print,Copy,Virus,Scan等等。
2)shellex:Shellex鍵有一個子鍵。它們包含的每一個子鍵指
向一個為對象類型執行OLE和DDE功能的CLSID項(比如
說快速查看,一個菜單處理子鍵下指向一個有句值的CLSID
鍵列出了包含了文件瀏覽功能的.dll文件)
3)shellnew:ShellNew包含了一個“command”句,它包含了一
個打開對象類型“新”文件的命令行。
4)DefaultIcon:DefaultIcon子鍵包含了一個“default”句,?/td>
即插即用簡單介紹
如果您編寫的VxD需要運行于Win95下,您必須提供設備信息文件
(.INF),這個文件可以告訴Win95如何安裝VxD,如何配置設備。
如果您需要INF文件的詳細內容可以在Win95DDK中找到。如果您
在Win95下的VxD是為PCI,PCMCIA或PNPISA設備編寫的,
您應該讓它支持即插即用,也就是PNP,PNP的作用就是您編寫的
VxD應該可以使用配置管理器(也是一個VxD)服務找到供這個設
備使用的系統資源,請注意,是從一個服務中獲得信息,而不是從一
個INI文件,也是硬件編碼中。
如果需要PNP功能,您的VxD必須可以處理由配置管理器發送來的
PNP_New_DevNode消息,程序還應該可以通過調用
CM_RegisterDeviceDriver注冊自己為此設備的驅動程序。在調用這
個函數時,您傳送給CM一個回叫函數,CM會在資源被指定后通知
您,并返回函數碼。當您的回叫函數通過CONFIG_START調用時,
調用函數CM_GetAllocLogConf找出提供給設備使用的系統資源。這
個調用會自動填充CM_CONFIG結構,這個結構中有相應的數據域
說明設備使用的I/O地址,IRQ等等信息。
對于某些類型的VxD,包括SCSIMiniPort驅動程序,網絡驅動程序
和VCOMN端口驅動程序,可以使用另一種方法來獲得配置信息。
這幾個類型是不同的,因為每種情況下會有不同的VxD充當驅動程
序裝載程序,而實際上,也正在驅動程序裝載程序和CM打交道,而
不是驅動程序VxD。這些驅動程序可能需要使用由驅動程序裝載程序
提供的配置服務,而不是和CM直接打交道。
在沒有得到正確的注冊表入口前之前,配置管理器是不會向用戶程序
發送PNP_New_DevNode消息的。而取得注冊表入口的最好辦法不
是手工進行,而是使用INF文件。Win95將在看到設備時向用戶提
示它需要INF文件,對于PCI,PCMCIA和ISAPNP設備,當用戶
物理上連接這個設備時這一切會自動發生;對于其它設備,用戶必須
運行設備管理器中的“添加新硬件”來達到同樣的效果。Win95會使用
提供好的INF文件設置注冊表入口。
Windows注冊表是幫助Windows控制硬件、軟件、用戶環境和
Windows界面的一套數據文件,注冊表包含在Windows目錄下兩個
文件和里,還有它們的備份0和
0。通過Windows目錄下的程序可以存取注冊表
數據庫。在以前,在windows的更早版本(在Win95以前),這些
功能是靠,和其他和應用程序有關聯的.ini文件來
實現的.
在windows操作系統家族中,和這兩個文件
包含了操作系統所有的控制功能和應用程序的信息,管理
計算機硬件而管理桌面和應用程序。所有驅動、字體、設置
和參數會保存在.ini文件中,任何新程序都會被記錄在.ini文件中。這
些記錄會在程序代碼中被引用。因為受和文件大
小的限制,程序員添加輔助的.INI文件以用來控制更多的應用程序。
舉例來說,微軟的Excel有一個文件,它包含著選項、
設置、缺省參數和其他關系到Excel運行正常的信息。在
和中只需要指出的路徑和文件名即可。
早在Dos和Win3.x的時代,大部分的應用程序都是采用了ini
文件(初始化文件)來保存一些配置信息,如設置路徑,環境變量等。
和控制著所有windows和應用程序的特征和存取
方法,它在少數的用戶和少數應用程序的環境中工作的很好。隨著應
用程序的數量和復雜性越來越大,則需要在.ini文件中添加更多的參
數項。
這樣下來,在一個變化的環境中,在應用程序安裝到系統中后,
每個人都會更改.ini文件。然而,沒有一個人在刪除應用程序后刪
除.ini文件中的相關設置,所以和這個兩個文件會
變的越來越大。每增加的內容會導致系統性能越來越慢。而且每次應
用程序的升級都出現這樣的難題:升級會增加更多的參數項但是從來
不去掉舊的設置。而且還有一個明顯的問題,一個.ini文件的最大尺
寸是64KB。為了解決這個問題,軟件商自己開始支持自己的.ini文
件,然后指向特定的ini文件如和文件。這樣下來
多個.ini文件影響了系統正常的存取級別設置。如果一個應用程序
的.ini文件和文件設置起沖突,究竟是誰的優先級更高呢?
注冊表最初被設計為一個應用程序的數據文件相關參考文件,最
后擴展成對于32位操作系統和應用程序包括了所有功能下的東東。
注冊表是一套控制操作系統外表和如何響應外來事件工作的文件。這
些“事件”的范圍從直接存取一個硬件設備到接口如何響應特定用戶
到應用程序如何運行等等。注冊表因為它的目的和性質變的很復雜,
它被設計為專門為32位應用程序工作,文件的大小被限制在大約
40MB。利用一個功能強大的注冊表數據庫來統一集中地管理系統硬
件設施,軟件配置等信息,從而方便了管理,增強了系統的穩定性。
最直觀的一個實例就是,為什么windows下的不同用戶可以擁有各
自的個性化設置,如不同的墻紙,不同的桌面。這就是通過注冊表來
實現的。
由此可見,注冊表(Registry)是Windows9x/Me/NT/2000操作
系統、硬件設備以及客戶應用程序得以正常運行和保存設置的核心
“數據庫”;是一個巨大的樹狀分層的數據庫。它記錄了用戶安裝在機
器上的軟件和每個程序的相互關聯關系;它包含了計算機的硬件配
置,包括自動配置的即插即用的設備和已有的各種設備說明、狀態屬
性以及各種狀態信息和數據等。
一、注冊表都做些什么?
注冊表是為WindowsNT和Windows95中所有32位硬件/驅動
和32位應用程序設計的數據文件。16位驅動在WindowsNT下無法
工作,所以所有設備都通過注冊表來控制,一般這些是通過BIOS來
控制的。在Win9x下,16位驅動會繼續以實模式方式設備工作,它
們使用來控制。16位應用程序會工作在NT或者Win9x
下,它們的程序仍然會參考和文件獲得信息和控
制。
在沒有注冊表的情況下,操作系統不會獲得必須的信息來運行和
控制附屬的設備和應用程序及正確響應用戶的輸入。
在系統中注冊表是一個記錄32位驅動的設置和位置的數據庫。
當操作系統需要存取硬件設備,它使用驅動程序,甚至設備是一個
BIOS支持的設備。無BIOS支持的設備安裝時必須需要驅動,這個
驅動是獨立于操作系統的,但是操作系統需要知道從哪里找到它們,
文件名、版本號、其他設置和信息,沒有注冊表對設備的記錄,它們
就不能被使用。
當一個用戶準備運行一個應用程序,注冊表提供應用程序信息給
操作系統,這樣應用程序可以被找到,正確數據文件的位置被規定,
其他設置也都可以被使用。
注冊表保存關于缺省數據和輔助文件的位置信息、菜單、按鈕條、
窗口狀態和其他可選項。它同樣也保存了安裝信息(比如說日期),
安裝軟件的用戶,軟件版本號和日期,序列號等。根據安裝軟件的不
同,它包括的信息也不同。
然而,一般來說,注冊表控制所有32位應用程序和驅動,控制
的方法是基于用戶和計算機的,而不依賴于應用程序或驅動,每個注
冊表的參數項控制了一個用戶的功能或者計算機功能。用戶功能可能
包括了桌面外觀和用戶目錄。所以,計算機功能和安裝的硬件和軟件
有關,對所以用戶來說項都是公用的。
有些程序功能對用戶有影響,有些時作用于計算機而不是為個人
設置的,同樣的,驅動可能是用戶指定的,但在很多時候,它們在計
算機中是通用的。
二、注冊表的結構劃分及相互關系
WINDOWS的注冊表有六大根鍵,相當于一個硬盤被分成了六
個分區。
在“運行”對話框中輸入RegEdit,然后單擊“確定”按鈕,則可以運
行注冊表編輯器。
Windows98中文版的注冊表Registry(、、
)的數據組織結構。
注冊表的根鍵共六個。這些根鍵都是大寫的,并以HKEY_為前綴;
這種命令約定是以Win32API的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_MACHINESOFTWAREClass就是
HKEY_CLASSES_ROOT,為了用戶便于查看和編輯,系統專門把
它作為一個根鍵。同理,
HKEY_CURRENT_CONFIGSY-STEMCurrentControl就是
HKEY_LOCAL_MACHINESYSTEMCurrentControl。
HKEY_USERS中保存了默認用戶和當前登錄用戶的用戶信息。
HKEY_CURRENT_USER中保存了當前登錄用戶的用戶信息。
HKEY_DYN_DATA保存了系統運行時的動態數據,它反映出系
統的當前狀態,在每次運行時都是不一樣的,即便是在同一臺機器上。
根據上面的分析,注冊表中的信息可以分為
HKEY_LOCAL_MACHINE和HKEY_USERS兩大類,這兩大類的詳
細內容請看后面的介紹。
三、六大根鍵的作用
在注冊表中,所有的數據都是通過一種樹狀結構以鍵和子鍵的方
式組織起來,十分類似于目錄結構。每個鍵都包含了一組特定的信息,
每個鍵的鍵名都是和它所包含的信息相關的。如果這個鍵包含子鍵,
則在注冊表編輯器窗口中代表這個鍵的文件夾的左邊將有“+”符號,
以表示在這個文件夾中有更多的內容。如果這個文件夾被用戶打開
了,那么這個“+”就會變成“-”。
_USERS
該根鍵保存了存放在本地計算機口令列表中的用戶標識和密碼
列表。每個用戶的預配置信息都存儲在HKEY_USERS根鍵中。
HKEY_USERS是遠程計算機中訪問的根鍵之一。
_CURRENT_USER
該根鍵包含本地工作站中存放的當前登錄的用戶信息,包括用戶
登錄用戶名和暫存的密碼(注:此密碼在輸入時是隱藏的)。用戶登錄
Windows98時,其信息從HKEY_USERS中相應的項拷貝到
HKEY_CURRENT_USER中。
_CURRENT_CONFIG
該根鍵存放著定義當前用戶桌面配置(如顯示器等)的數據,最后
使用的文檔列表(MRU)和其他有關當前用戶的Windows98中文
版的安裝的信息。
_CLASSES_ROOT
根據在Windows98中文版中安裝的應用程序的擴展名,該根鍵
指明其文件類型的名稱。
在第一次安裝Windows98中文版時,RTF(RichTextformat)文
件與寫字板(WordPad)&127;聯系起來,但在以后安裝了中文Word
6.0后,雙擊一個RTF文件時,將自動激活Word。存放在
中的HKEY_CLASSES_ROOT,將替代文件
中的[Extensions]&127;小節中的設置項,它把應用程序與文件擴展名
聯系起來,它也替代了Windows3.x中的文件中的相似的設
置項。
_LOCAL_MACHINE
該根鍵存放本地計算機硬件數據,此根鍵下的子關鍵字包括在
中,用來提供HKEY_LOCAL_MACHINE所需的信息,
或者在遠程計算機中可訪問的一組鍵中。
該根鍵中的許多子鍵與文件中設置項類似。
_DYN_DATA
該根鍵存放了系統在運行時動態數據,此數據在每次顯示時都是
變化的,因此,此根鍵下的信息沒有放在注冊表中。
四、注冊表部分重要內容
注冊表是一個大型數據庫Registry。要詳細地分析該數據庫,不
是一兩頁就能介紹完。我曾經用了半年多時間分析此數據庫結構。下
面只介紹部分重要內容。
(一)HKEY_CLASS_ROOT
_CLASS_ROOT/re/DefaultIcon雙擊窗口右
側的默認字符串,在打開的對話框中刪除原來的“鍵值”,輸入%1。重
新啟動后,在“我的電腦”中打開Windows目錄,選擇“大圖標”,然后
你看到的Bmp文件的圖標再也不是千篇一律的MSPAINT圖標了,
而是每個Bmp文件的略圖(前提是未安裝ACDSee等看圖軟件)。
(二)HKEY_CURRENT_USER
_CURRENT_USERControlPanelDesktop中新建串
值名MenuShowDelay=0可使“開始”菜單中子菜單的彈出速度提高。
2.在HKEY_CURRENT_USERControl
PanelDeskt-opWindowsMeterics中新建串值名MinAnimate,值為
1啟動動畫效果開關窗口,值為0取消動畫效果。
(三)HKEY_LOCAL_MACHINE
_LOCAL_MACHINEsoftwaremicrosoftwindowscurrentVe
rsionexplorerurshellfolders保存個人文件夾、收藏夾的路徑。
_LOCAL_MACHINEsystemcurrentControl-Setcontrolkey
boardLayouts保存鍵盤使用的語言以及各種中文輸入法。
_LOCAL_MACHINEsoftwaremicrosoftwindowscurrentVe
rsionuninstall保存已安裝的Windows應用程序卸載信息。
_LOCAL_MACHINEsystemCurrentControl-Setrvicescl
ass保存控制面板-增添硬件設備-設備類型目錄。
_LOCAL_MACHINEsystemCurrent-ControlSetcontrolup
date設置刷新方式。值為00設置為自動刷新,01設置為手工刷新[在
資源管理器中按F5]。
_LOCAL_MACHINEsoftwaremicrosoftwin-dowscurrentV
ersionrun保存由控制面板設定的計算機啟動時運行程序的名稱,其
圖標顯示在任務條右邊。在“啟動”文件夾程序運行時圖標也在任務條
右邊。
_LOCAL_MACHINEsoftwaremicrosoftwindowscurrentVe
rsionPoliciesRatings保存IE4.0中文版“安全”“分級審查”中設置的
口令(數據加密),若遺忘了口令,刪除Ratings中的數據即可解決問
題。
_LOCAL_MACHINEsoftwaremicrosoftwindowscurrentVe
rsionexplorerdesktopnameSpace保存桌面中特殊的圖標,如回收
站、收件箱、MSNetwork等。
(四)HKEY_USERS
_tsoftwaremicrosoftinternet
explorertypeURLs保存IE4.0瀏覽器地址欄中輸入的URL地址列表
信息。清除文檔菜單時將被清空。
_tso..mi..wi..current-Versionex..menuO
rderstartMenu保留程序菜單排序信息。
_tso..microsoftwindowscurrent-Versione
xplorerRunMRU保存“開始運行...”中運行的程序列表信息。清除
文檔菜單時將被清空。
_tso..microsoftwindowscurrent-Versione
xplorerRecentDocs保存最近使用的十五個文檔的快捷方式(刪除掉
可解決文檔名稱重復的毛病),清除文檔菜單時將被清空。
_tsoftwaremicrosoftwindowscurrentVersi
onapplets保存Windows應用程序的記錄數據。
_tsoftwaremicrosoftwindowscurrentVersi
onrun保存由用戶設定的計算機啟動時運行程序的名稱,其圖標顯示
在任務條右側。
五、與注冊表有關的術語:
①、注冊表:是一個樹狀分層的數據庫。從物理上講,它是
和兩個文件;從邏輯上講,它是用戶在注冊表
編輯器中看到的配置數據。
②、HKEY:“根鍵”或“主鍵”,它的圖標與資源管理器中文件夾
的圖標有點兒相像。Windows98將注冊表分為六個部分,并稱之為
HKEY_name,它意味著某一鍵的句柄。
③、key(鍵):它包含了附加的文件夾和一個或多個值。
④、subkey(子鍵):在某一個鍵(父鍵)下面出現的鍵(子
鍵)。
⑤、branch(分支):代表一個特定的子鍵及其所包含的一切。
一個分支可以從每個注冊表的頂端開始,但通常用以說明一個鍵和其
所有內容。
⑥、valueentry(值項):帶有一個名稱和一個值的有序值。每
個鍵都可包含任何數量的值項。每個值項均由三部分組成:名稱,數
據類型,數據。
★名稱:不包括反斜杠的字符、數字、代表符、空格的任意組
合。同一鍵中不可有相同的名稱。
★數據類型:包括字符串、二進制、雙字三種。
字符串(REG_SZ):顧名思義,一串ASCII碼字符。如“Hello
World”,是一串文字或詞組。在注冊表中,字符串值一般用來表示文
件的描述、硬件的標識等。通常它由字母和數字組成。注冊表總是在
引號內顯示字符串。
二進制(REG_BINARY):如F03D990000BC,是沒有長度限
制的二進制數值,在注冊表編輯器中,二進制數據以十六進制的方式
顯示出來。
雙字(REG_DWORD):從字面上理解應該是DoubleWord,
雙字節值。由1-8個十六進制數據組成,我們可用以十六進制或十進
制的方式來編輯。如D1234567。
★數據:值項的具體值,它可以占用到64KB。
⑦、Default(缺省值):每一個鍵至少包括一個值項,稱為缺
省值(Default),它總是一個字串
s注冊表詳解
作者:駱誠
在Windows文件夾中有和這樣兩個隱
藏文件,其中保存了至關重要的注冊表信息。我們可以通過運行
來修改windows的設置,達到其他方法不能達到的效果,
使Windows更如你意。本說明書的內容以Win98第一版為準,但多
數也是適用于Win95、Win95osr2、Win98甚至Win2000的。
一、注冊表根鍵說明
hkey_class_root包含注冊的所有OLE信息和文檔類型,是
從hkey_local_machinesoftwareclass復制的。
hkey_current_ur包含登錄的用戶配置信息,是從hkey_urs
當前用戶子樹復制的。
hkey_local_machine包含本機的配置信息。其中config子樹是
顯示器打印機信息;enum子樹是即插即用設備信息;system子樹
是設備驅動程序和服務參數的控制集合;software子樹是應用程序專
用設置。
hkey_urs所有登錄用戶信息。
hkey_current_config包含常被用戶改變的部分硬件軟件配置,如字
體設置、顯示器類型、打印機設置等。是從hkey_local_machineconfig
復制的。
hkey_dyn_data包含現在計算機內存中保存的系統信息。
二、注冊表詳細內容
Hkey_local_machinesoftwaremicrosoftwindowscurrentVersione
xplorerurshellfolders保存個人文件夾、收藏夾的路徑
Hkey_local_machinesystemcurrentControlSetcontrolkeyboard
Layouts保存鍵盤使用的語言以及各種中文輸入法
Hkey_tsoftwaremicrosoftinternetexplorertypeURLs
保存IE瀏覽器地址欄中輸入的URL地址列表信息。清除文檔菜單時
將被清空。
Hkey_tso..mi..wi..currentVersionex..menuOrderst
artMenu保留程序菜單排序信息
Hkey_tso..microsoftwindowscurrentVersionexplore
rRunMRU保存“開始*運行...“中運行的程序列表信息。清除文檔菜
單時將被清空。
Hkey_tso..microsoftwindowscurrentVersionexplore
recentDocs保存最近使用的十五個文檔的快捷方式(刪除掉可解決
文檔名稱重復的毛病),清除文檔菜單時將被清空。
Hkey_local_machinesoftwaremicrosoftwindowscurrentVersionu
ninstall保存已安裝的Windows應用程序卸載信息。
hkey_tsoftwaremicrosoftwindowscurrentVersionap
plets保存Windows應用程序的紀錄數據。
Hkey_local_machinesystemCurrentControlSetrvicesclass保
存控制面板-增添硬件設備-設備類型目錄。
Hkey_local_machinesystemCurrentControlSetcontrolupdate
立即刷新設置。值為00設置為自動刷新,01設置為手工刷新[在資
源管理器中按F5刷新]。
HKEY_CURRENT_USERControlPanelDesktop新建串值名
MenuShowDelay=0可使“開始”菜單中子菜單的彈出速度提高。新建
串值名MinAnimate,值為1啟動動畫效果開關窗口,值為0取消動
畫效果。
Hkey_local_machinesoftwaremicrosoftwindowscurrentVersionru
n保存由控制面板設定的計算機啟動時運行程序的名稱,其圖標顯示
在任務條右邊。[啟動文件夾程序運行時圖標也在任務條右邊]
hkey_tsoftwaremicrosoftwindowscurrentVersionrun
保存由用戶設定的計算機啟動時運行程序的名稱,其圖標顯示在任務
條右側。
HKEY_CLASS_ROOT/re/DefaultIcon默認圖片的圖
標。雙擊窗口右側的字符串,在打開的對話框中刪除原來的鍵值,輸
入%1。重新啟動后,在“我的電腦”中打開Windows目錄,選擇“大圖
標“,然后你看到的Bmp文件的圖標再也不是千篇一律的畫板圖標了,
而是每個Bmp文件的略圖。
Hkey-local-machinesoftwaremicrosoftwindows
currentVersionPoliciesRatings保存IE4.0中文版“安全”*“分級審
查”中設置的口令(數據加密)。
Hkey-local-machinesoftwaremicrosoftwindows
currentVersionexplorerdesktopnameSpace保存桌面中特殊的圖
標,如回收站、收件箱、MSNetwork等。
三、怎樣存取注冊表信息
可以通過VB5.0提供的兩個語句和兩個函數在程序中讀寫注冊
表。
1、SaveSetting語句
語法.SaveSettingappname,ction,key,tting
2、GetAllSettings函數
語法.GetAllSettings(appname,ction)
3、GetSetting函數
語法.GetSetting(appname,scetion,key[,default])
4、DeleteSetting語句
語法.DeleteSettingappname,ction,[key]
參數含義.
appname.字符串表達式,應用程序名
ction.字符串表達式,小節名
key.字符串表達式,關鍵字名
tting.表達式,關鍵字設定值
下面通過實例來說明它們的用法.應用程序名為jld_app,小節
名為startup,關鍵字為left。
在注冊表中建立應用程序的注冊項.
SaveSetting“jld_app”,“startup”,“left”,100
從應用程序注冊表項中讀取所有關鍵字及其對應的值.
Dimmyttings(10,10)AsVariant
DimttingindexAsInteger
GetAllSettings“jld_app”,“startup”
Forttingindex=LBound(myttings,1)ToUBound(myttins,1)
yttings(ttingindex,0);
“=”;myttings(ttingindex,1)
Nextttingindex
EndSub
從應用程序注冊表項中讀取關鍵字“left“的設置.
etSetting(“jld_app”,“startup”,“left”,“notok”)
從WIN98注冊表中刪除小節“startup”
DeleteSetting“jld_app”,“startup”
四、注冊表的備份
Windows每次啟動都會自動對注冊表進行備份。放在
windowssysbckup里的文件里,出注冊表出現問題,在
DOS下用extract/e展開,拷貝回去就可以了
Windows95啟動過程中可以分為以下步驟:
?只讀存儲器(ROM)的基本輸入輸出(BIOS)引導過程
?主啟動記錄(MBR)和啟動扇區
?文件
?實模式配置
?文件和$Windows95環境
回到頂端
步驟1-的ROMBIOS啟動進程
當您啟動您的計算機時,ROMBIOS引導加載從FFFF0h內存地
址。在引導ROMBIOS的過程中進行下列步驟:
1.開機自檢(POST)時發生。
2.在A驅動器存在的啟動磁盤檢查。
3.如果在A驅動器中找不到啟動磁盤,ROMBIOS引導檢查的
硬盤。如果找到一個硬盤,則ROM加載程序將控制轉移到操
作系統加載程序中。
4.主啟動記錄和分區表是只讀的。
Microsoft和幾個原始設備制造商(oem)定義了一個插即用
BIOS的規范。此規范中定義了在設備和BIOS、插即用設備
和選項及之間的交互。如果您的計算機有一個即插即用和
BIOS,請執行下列附加步驟:
5.即插即用和BIOS將非易失性的隨機存取內存(RAM)檢查
輸入/輸出(I/O)端口地址中斷請求(irq)線路、直接內存訪問
(DMA)通道和其他設置所需在計算機上配置的即插即用設備。
6.通過即插即用和BIOS找到的所有插即用設備被都禁用。
7.創建地圖的使用和未使用的資源。
8.配置并重新啟用,一次,即插即用設備。
windows95配置管理器為設備信息中查詢插BIOS,然后查詢其配
置為每個即插即用設備。
如果您的計算機沒有一個即插即用和BIOS,使用其默認設置,當您
啟動計算機時初始化的即插即用設備。Windows95啟動時,可能
會將這些設備重新配置動態。
回到頂端
步驟2-的主引導記錄和啟動扇區
主引導記錄決定通過讀取分區表來啟動分區的位置位于母版的端引
導記錄。一旦確定的位置啟動分區的主引導記錄將控制傳遞在該分
區引導扇區。引導扇區包含磁盤引導程序和磁盤特征的表。引導扇
區檢查BIOS參數塊(BPB),以查找根目錄的位置,然后將
文件根區目錄中復制到內存。
回到頂端
步驟3-的文件
文件加載到內存時,將執行以下步驟:
1.加載一個最小的文件分配表(FAT)文件系統。
文件中讀取。
3.
Windows95"消息。將顯示消息的時間量由該BootDelay=
4.如果您在Windows95中有多個硬件配置文件,您會收到以下
消息,并且必須選擇要使用的硬件配置:
Windows不能確定您的計算機處于何種配置。
文件被加載,并顯示在屏幕上的啟動圖像。
6.如果或文件或
文件加載到內存中。
文件檢查系統的注冊表文件(和
)的有效數據。
文件打開的文件。如果沒有找到
文件,則使用0文件進行啟動。如果
成功地啟動Windows95,0文件被復制到該
文件。
9.如果加載文件在"DoubleBuffer=1"是在
文件中,或者如果在以下注冊表項下啟用雙緩沖:
HKLMSystemCurrentControlSetControlWinBootDoubleBu
ffer
Windows95安裝將自動啟用雙緩沖,如果它檢測到這是必需。
10.如果您在Windows95中有多個硬件配置文件,從注冊表加
載在您選擇的硬件配置文件。
文件處理沖突文件。
回到頂端
步驟4-伊模式配置
某些硬件設備和程序都需要驅動程序或文件被加載在實模式中以便
將它們正常工作。如果存在,請確保向后與這些類型的硬件設備或
$程序兼容性,Windows95處理沖突和文件。
1.沖突文件加載到內存的驅動程序。如果不存在沖突文件,
文件加載下列所需的驅動程序:
文件獲得的兩個文件的位置在"WinBootDir
="文件的行。這些文件必須駐留在硬盤上。
s95保留所有全局上端內存塊(UMBs)的Windows
95操作系統使用或擴展內存支持(EMS)。
文件加載文件,并終止并保持到內存的駐留
(TSR)程序。
回到頂端
步驟5-的文件和Windows95環境
1.在處理文件之后,文件運行。
2.該文件訪問文件。如果有足夠的可用
內存,文件將加載到內存,否則,從硬盤訪問它。
這可能會導致較慢的啟動時間。類似于Windows的早期版本
中使用的文件文件。
3.實模式虛擬設備驅動程序加載程序將檢查重復的虛擬設備驅動
程序(vxd)在WindowsSystemVmm32文件夾和
$文件中。如果這兩個在
WindowsSystemVmm32中存在一個VxD文件夾和
$文件重復VxD被標識為"已"文件
中未加載。
4.實模式vxd可以加載到內存中通過以下方法之一:
1.實模式設備驅動程序或tsr,以響應在Windows95
INT2F廣播加載其嵌入的vxd,Windows95啟動時。
2.從下面的注冊表項加載到文件內部的驅動
程序將不會"標記":
HKEY_LOCAL_MACHINESystemCurrentControlSetS
ervicesVxD
實模式虛擬設備驅動程序加載程序查找"標記"驅動程序,
如果它從VxD更改其注冊表項(驅動程序前面帶有一
個asterix"*")到帶有.vxd擴展名的文件,以便在
WindowsSystemVmm32文件夾中找到外部驅動程序。
當找到外部驅動程序時,它被加載到內存中。
3.不通過文件已加載的vxd從[386增強]
加載文件的節。
4.某些vxd是所必需的Windows95正常運行。這些要求
的vxd會自動加載,而不需要一個注冊表項。下面的
vxd所需的Windows95:
5.*BIOSXLAT*CONFIGMG
*DYNAPAGE
6.*DOSMGR*EBIOS*IFSMGR
7.*INT13*IOS*PAGESWAP
8.*SHELL*V86MMGR*VCD
9.*VCACHE*VCOMM*VCOND
10.*VDD*VDMAD*VFAT
11.*VKD*VMCPD*VPICD
12.*VTD*VTDAPI*VWIN32
*VXDLDR
5.實模式虛擬設備驅動程序加載程序將檢查所有所需的vxd加
載成功。如果沒有,則它將嘗試重新加載的驅動程序。
6.一旦記錄實模式虛擬設備驅動程序加載,驅動程序初始化時發
生。如果需要實模式初始化任何vxd開始實模式在其過程。
32切換實模式中以保護模式的計算機的處理器。
8.三個階段VxD初始化過程發生的順序在其中它們被加載到內
存而不是其InitDevice根據要加載該設備驅動程序。在vxd
被執行下面的順序:
_CRITICAL_INIT(SYSCRITINIT):
在此階段,中斷將被禁用。這樣,vxd時間來準備設備
初始化不由系統被中斷的情況下。文件I/O不被允許
SYSCRITINIT,期間,因此所有SYSCRITINITs不會都
寫入文件,直到后SYSCRITINIT已經完成
了所有的vxd。
_DEVICE_INIT(DEVICEINIT)
在此階段中發生的VxD初始化大容量。文件I/O允許
在DEVICEINIT,因此每個VxD的過程中發生時記錄
DEVICEINIT。一個例外是Ifsmgr的期間
DEVICEINIT。Ifsmgr實模式通過文件系統,而且磁盤
I/O不允許直到Ifsmgr的DEVICEINIT成功。由于這
個原因Ifsmgr未出現在DEVICEINIT階段中。
在調用DevLoaderVxD時它會加載它負責,而不考慮
其InitDevice順序的其他驅動程序。在DevLoader檢
查注冊表,并發現驅動程序(例如對于portdrivers[這
樣文件])和任何相關支持驅動程序。然后,
它將初始化設備與這些驅動程序相關聯。此階段如果
VxD未能初始化,它不能正確地與硬件或該驅動器的服
務進行通信。通常,這是由于不正確的硬件設置或不安裝
該服務。
剩余的靜態vxd繼續執行初始化階段。此外,動態vxd
可能開始在此階段中初始化。它們不具有SYSCRITINIT
階段。但是,動態VxD可能還加載隨時啟動Windows
95后。
_INIT_COMPLETE(INITCOMPLETE)
成功地通過InitComplete階段的vxd應正常工作。如
果VxD已列在上一階段之一,但沒有成功在此階段中,
該VxD是從內存中卸載。
GUI組件:
所有加載靜態vxd、在、、
和之后(默認Windows95外殼)加載
文件。
網絡環境和多用戶配置文件:
在啟動過程中的下一步是加載在網絡環境。一旦出現這種情況被提
示用戶登錄到已安裝的網絡上。
windows95允許多個用戶保存他們的自定義桌面設置。Windows
95到在用戶登錄時都將從注冊表加載其桌面設置。如果用戶不能登
錄,桌面配置將使用默認桌面。
啟動組和RunOnce程序:
在啟動組和RunOnce注冊表項中的程序運行在啟動過程的最后一
個階段。RunOnce注冊表項中的每個程序啟動后,從鍵中刪除該程
序。
回到頂端
這篇文章中的信息適用于:
回到頂端
關鍵字:kbmtkbinfoKB174018KbMtzh
回到頂端
機器翻譯
注意:這篇文章是由無人工介入的微軟自動的機器翻譯軟件翻譯完
成。微軟很高興能同時提供給您由人工翻譯的和由機器翻譯的文章,
以使您能使用您的語言訪問所有的知識庫文章。然而由機器翻譯的文
章并不總是完美的。它可能存在詞匯,語法或文法的問題,就像是一
個外國人在說中文時總是可能犯這樣的錯誤。雖然我們經常升級機器
翻譯軟件以提高翻譯質量,但是我們不保證機器翻譯的正確度,也不
對由于內容的誤譯或者客戶對它的錯誤使用所引起的任何直接的,
或間接的可能的問題負責。
點擊這里察看該文章的英文版:174018
回到頂端
Microsoft和/或其各供應商對于為任何目的而在本服務器上發布的文
件及有關圖形所含信息的適用性,不作任何聲明。所有該等文件及
有關圖形均"依樣"提供,而不帶任何性質的保證。Microsoft和/或其
各供應商特此聲明,對所有與該等信息有關的保證和條件不負任何責
任,該等保證和條件包括關于適銷性、符合特定用途、所有權和非侵
權的所有默示保證和條件。在任何情況下,在由于使用或運行本服務
器上的信息所引起的或與該等使用或運行有關的訴訟中,Microsoft
和/或其各供應商就因喪失使用、數據或利潤所導致的任何特別的、
間接的、衍生性的損害或任何因使用而喪失所導致的之損害、數據或
利潤不負任何責任。
本文發布于:2023-03-08 06:52:51,感謝您對本站的認可!
本文鏈接:http://m.newhan.cn/zhishi/a/167822957117973.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:注冊表恢復.doc
本文 PDF 下載地址:注冊表恢復.pdf
| 留言與評論(共有 0 條評論) |