WINDOWS注冊表基礎知識
2009-08-28 17:14:55網(wǎng)絡資源
Windows注冊表是幫助Windows控制硬件、軟件、用戶環(huán)境和Windows界面的一套數(shù)據(jù)文件,注冊表包含在Windows目錄下兩個文件 system.dat和user.dat里,還有它們的備份system.da0和user.da0。通過Windows目錄下的regedit.exe 程序可以存取注冊表數(shù)據(jù)庫。在以前,在windows的更早版本(在Win95以前),這些功能是*win.ini,system.ini和其他和應用程序有關聯(lián)的.ini文件來實現(xiàn)的.
在windows操作系統(tǒng)家族中,system.ini和win.ini這兩個文件包含了操作系統(tǒng)所有的控制功能和應用程序的信息, system.ini管理計算機硬件而win.ini管理桌面和應用程序。所有驅動、字體、設置和參數(shù)會保存在.ini文件中,任何新程序都會被記錄在. ini文件中。這些記錄會在程序代碼中被引用。因為受win.ini和system.ini文件大小的限制,程序員添加輔助的.INI文件以用來控制更多的應用程序。舉例來說,微軟的Excel有一個excel.ini文件,它包含著選項、設置、缺省參數(shù)和其他關系到Excel運行正常的信息。在 system.ini和win.ini中只需要指出excel.ini的路徑和文件名即可。
早在Dos和Win3.x的時代,大部分的應用程序都是采用了 ini 文件(初始化文件)來保存一些配置信息,如設置路徑,環(huán)境變量等。system.ini和win.ini控制著所有windows和應用程序的特征和存取方法,它在少數(shù)的用戶和少數(shù)應用程序的環(huán)境中工作的很好。隨著應用程序的數(shù)量和復雜性越來越大,則需要在.ini文件中添加更多的參數(shù)項。這樣下來,在一個變化的環(huán)境中,在應用程序安裝到系統(tǒng)中后,每個人都會更改.ini文件。然而,沒有一個人在刪除應用程序后刪除.ini文件中的相關設置,所以 system.ini和win.ini這個兩個文件會變的越來越大。每增加的內(nèi)容會導致系統(tǒng)性能越來越慢。而且每次應用程序的升級都出現(xiàn)這樣的難題:升級會增加更多的參數(shù)項但是從來不去掉舊的設置。而且還有一個明顯的問題,一個.ini文件的最大尺寸是64KB。為了解決這個問題,軟件商自己開始支持自己的.ini文件,然后指向特定的ini文件如win.ini和system.ini文件。這樣下來多個.ini文件影響了系統(tǒng)正常的存取級別設置。如果一個應用程序的.ini文件和WIN.INI文件設置起沖突,究竟是誰的優(yōu)先級更高呢?
注冊表最初被設計為一個應用程序的數(shù)據(jù)文件相關參考文件,最后擴展成對于32位操作系統(tǒng)和應用程序包括了所有功能下的東東。注冊表是一套控制操作系統(tǒng)外表和如何響應外來事件工作的文件。這些“事件”的范圍從直接存取一個硬件設備到接口如何響應特定用戶到應用程序如何運行等等。注冊表因為它的目的和性質變的很復雜,它被設計為專門為32位應用程序工作,文件的大小被限制在大約40MB。利用一個功能強大的注冊表數(shù)據(jù)庫來統(tǒng)一集中地管理系統(tǒng)硬件設施,軟件配置等信息,從而方便了管理,增強了系統(tǒng)的穩(wěn)定性。最直觀的一個實例就是,為什么windows下的不同用戶可以擁有各自的個性化設置,如不同的墻紙,不同的桌面。這就是通過注冊表來實現(xiàn)的。
由此可見,注冊表(Registry)是Windows9x/Me/NT/2000操作系統(tǒng)、硬件設備以及客戶應用程序得以正常運行和保存設置的核心 “數(shù)據(jù)庫”;是一個巨大的樹狀分層的數(shù)據(jù)庫。它記錄了用戶安裝在機器上的軟件和每個程序的相互關聯(lián)關系;它包含了計算機的硬件配置,包括自動配置的即插即用的設備和已有的各種設備說明、狀態(tài)屬性以及各種狀態(tài)信息和數(shù)據(jù)等。
注冊表都做些什么?
注冊表是為Windows NT和Windows95中所有32位硬件/驅動和32位應用程序設計的數(shù)據(jù)文件。16位驅動在Windows NT下無法工作,所以所有設備都通過注冊表來控制,一般這些是通過BIOS來控制的。在Win9x下,16位驅動會繼續(xù)以實模式方式設備工作,它們使用 system.ini來控制。16位應用程序會工作在NT或者Win9x 下,它們的程序仍然會參考win.ini和system.ini文件獲得信息和控制。
在沒有注冊表的情況下,操作系統(tǒng)不會獲得必須的信息來運行和控制附屬的設備和應用程序及正確響應用戶的輸入。
在系統(tǒng)中注冊表是一個記錄32位驅動的設置和位置的數(shù)據(jù)庫。當操作系統(tǒng)需要存取硬件設備,它使用驅動程序,甚至設備是一個BIOS支持的設備。無 BIOS支持的設備安裝時必須需要驅動,這個驅動是獨立于操作系統(tǒng)的,但是操作系統(tǒng)需要知道從哪里找到它們,文件名、版本號、其他設置和信息,沒有注冊表對設備的記錄,它們就不能被使用。
當一個用戶準備運行一個應用程序,注冊表提供應用程序信息給操作系統(tǒng),這樣應用程序可以被找到,正確數(shù)據(jù)文件的位置被規(guī)定,其他設置也都可以被使用。
注冊表保存關于缺省數(shù)據(jù)和輔助文件的位置信息、菜單、按鈕條、窗口狀態(tài)和其他可選項。它同樣也保存了安裝信息(比如說日期),安裝軟件的用戶,軟件版本號和日期,序列號等。根據(jù)安裝軟件的不同,它包括的信息也不同。
然而,一般來說,注冊表控制所有32位應用程序和驅動,控制的方法是基于用戶和計算機的,而不依賴于應用程序或驅動,每個注冊表的參數(shù)項控制了一個用戶的功能或者計算機功能。用戶功能可能包括了桌面外觀和用戶目錄。所以,計算機功能和安裝的硬件和軟件有關,對所以用戶來說項都是公用的。
有些程序功能對用戶有影響,有些時作用于計算機而不是為個人設置的,同樣的,驅動可能是用戶指定的,但在很多時候,它們在計算機中是通用的。
注冊表控制用戶模式的例子有:
★控制面板功能;
★桌面外觀和圖標;
★網(wǎng)絡參數(shù);
★瀏覽器功能性和特征。
這些功能中的某些是和用戶無關的,有些是針對用戶的。
計算機相關控制項基于計算機名,和登陸用戶無關?刂祁愋偷睦邮前惭b一個應用程序,不管是哪個用戶,程序的可用性和存取是不變的,然而,運行程序圖標依賴于網(wǎng)絡上登陸的用戶。網(wǎng)絡協(xié)議可用性和優(yōu)先權基于計算機,但是當前連接和用戶信息相關。
這里是在注冊表中基與計算機控制條目的一些例子:
★存取控制;
★登陸確認;
★文件和打印機共享;
★網(wǎng)卡設置和協(xié)議;
★系統(tǒng)性能和虛擬內(nèi)存設置。
沒有了注冊表,Win9x和Windows NT 就不太可能存在。它們實在太復雜了,以致于用過去的.ini文件無法控制,它們的擴展能力需要幾乎無限制的安裝和使用應用程序,注冊表實現(xiàn)了它。然而,注冊表比.ini文件更復雜,理解它如何工作,它做什么和如何用它來做是有效管理系統(tǒng)的關鍵。
在系統(tǒng)中注冊表控制所有32位應用程序和它們的功能及多個應用程序的交互,比如復制和粘貼,它也控制所有的硬件和驅動程序。雖然多數(shù)可以通過控制面板來安裝和設置,理解注冊表仍是做Windows NT和Win9x系統(tǒng)管理基本常識。
概括起來,注冊表中存放著各種參數(shù),直接控制著 Windows 的啟動、硬件驅動程序的裝載以及一些 Windows 應用程序的運行,從而在整個系統(tǒng)中起著核心作用。它包括:
(1)軟、硬件的有關配置和狀態(tài)信息,注冊表中保存有應用程序和資源管理器外殼的初始條件、首選項和卸載數(shù)據(jù)。
(2)聯(lián)網(wǎng)計算機的整個系統(tǒng)的設置和各種許可,文件擴展名與應用程序的關聯(lián),硬件部件的描述、狀態(tài)和屬性。
(3)性能記錄和其它底層的系統(tǒng)狀態(tài)信息,以及其它數(shù)據(jù)。