註冊表

電腦通訊 9547 162 2014-11-24

註冊表(Registry)是微軟公司從Windows95系統開始(至目前最新Win2000系統依然使用的是它),引入用於代替原先Win32系統裡.ini文件,管理配置系統運行參數的一個全新的核心數據庫。在這個數據庫裡整合集成了全部系統和應用程序的初始化信息;其中包含了硬件設備的說明、相互關聯的應用程序與文檔文件、窗口顯示方式、網絡連接參數、甚至有關係到計算機安全的網絡享設置 。它與老的win32系統裡的ini文件相比,具有方便管理,安全性較高、適於網絡操作等特點。

在形式上,註冊表與INI文件有兩個顯著的特點:

1.註冊表採用的是二進制形式登錄數據,INI文件採用的則是簡單的文本形式登錄數據

2.註冊表支持子關鍵字,各級子關鍵字都有自己的「鍵值」,INI文件中則支持節以及節中的參數。

在功能上,註冊表與.INI文件相比,主要有以下三個特點:

1.註冊表允許對硬件、某些操作系統參數、應用程序和設備驅動程序進行跟蹤配置,這使得某些配置的改變可以在不重新啟動系統的情況下立即生效。

2.註冊表中登錄的硬件部分數據可以用來支持Win95的即插即用特性。當Win95檢測到機器上的各種設備時,就把有關數據保存到註冊表中。通常是在安裝時進行這種檢測的,但Win95啟動或原有配置改變時,也要進行檢測。如安裝一個新的硬件時,Win95將檢查註冊表,以便確定哪些資源已被佔用,這樣就可以避免新設備與原有設備之間的資源衝突。

3.通過註冊表,管理人員和用戶可以在網絡上檢查系統的配置和設置,使得遠程管理得以實現。

註冊表因為它複雜的結構和沒有任何聯繫的CLSID鍵使得它可能看上去很神秘。不幸的是,微軟並沒有完全公開講述關於註冊表正確設置的支持信息,這樣使得註冊表看上去更不可琢磨。處理和編輯註冊表如同「黑色藝術」一樣,它在系統中的設置讓用戶感覺像在黑暗中摸索一樣找不到感覺。這樣,因為用戶對這方面的缺乏瞭解使得註冊表更多的出現故障。

Windows註冊表是幫助Windows控制硬件、軟件、用戶環境和Windows界面的一套數據文件,註冊表包含在Windows目錄下兩個文件system.dat和user.dat裡,還有它們的備份system.da0和user.da0。通過Windows目錄下的regedit.exe程序可以存取註冊表數據庫。

在以前,在windows的更早版本(在win95以前),這些功能是靠win.ini,system.ini和其他和應用程序有關聯的.ini文件來實現的.

在windows操作系統家族中,system.ini和win.ini這兩個文件包含了操作系統所有的控制功能和應用程序的信息,system.ini管理計算機硬件而win.ini管理桌面和應用程序。

所有驅動、字體、設置和參數會保存在.ini文件中,任何新程序都會被記錄在.ini文件中。這些記錄會在程序代碼中被引用。因為受win.ini和system.ini文件大小的限制,程序員添加輔助的.INI文件以用來控制更多的應用程序。舉例來說,微軟的Excel有一個excel.ini文件,它包含著選項、設置、缺省參數和其他關係到Excel運行正常的信息。在system.ini和win.ini中只需要指出excel.ini的路徑和文件名即可。

最開始,system.ini和win.ini控制著所有windows和應用程序的特徵和存取方法,它在少數的用戶和少數應用程序的環境中工作的很好。隨著應用程序的數量和複雜性越來越大,則需要在.ini文件中添加更多的參數項。這樣下來,在一個變化的環境中,在應用程序安裝到系統中後,每個人都會更改.ini文件。

然而,沒有一個人在刪除應用程序後刪除.ini文件中的相關設置,所以system.ini和win.ini這個兩個文件會變的越來越大。每增加的內容會導致系統性能越來越慢。而且每次應用程序的升級都出現這樣的難題:升級會增加更多的參數項但是從來不去掉舊的設置。

而且還有一個明顯的問題,一個.ini文件的最大尺寸是64Kb。為了解決這個問題,軟件商自己開始支持自己的.ini文件,然後指向特定的ini文件如win.ini和system.ini文件。這樣下來多個.ini文件影響了系統正常的存取級別設置。如果一個應用程序的.ini文件和WIN.INI文件設置起衝突,究竟是誰的優先級更高呢?

註冊表最初被設計為一個應用程序的數據文件相關參考文件,最後擴展成對於32位操作系統和應用程序包括了所有功能下的東東.註冊表是一套控制操作系統外表和如何響應外來事件工作的文件。這些「事件」的範圍從直接存取一個硬件設備到接口如何響應特定用戶到應用程序如何運行等等。註冊表因為它的目的和性質變的很複雜,它被設計為專門為32位應用程序工作,文件的大小被限制在大約40Mb。

註冊表都做些什麼?

註冊表是為WindowsNT和Windows95中所有32位硬件/驅動和32位應用程序設計的數據文件。16位驅動在Winnt下無法工作,所以所有設備都通過註冊表來控制,一般這些是通過bIOS來控制的。在Win95下,16位驅動會繼續以實模式方式設備工作,它們使用system.ini來控制。16位應用程序會工作在NT或者Win95下,它們的程序仍然會參考win.ini和system.ini文件獲得信息和控制。

在沒有註冊表的情況下,操作系統不會獲得必須的信息來運行和控制附屬的設備和應用程序及正確響應用戶的輸入。

在系統中註冊表是一個記錄32位驅動的設置和位置的數據庫。當操作系統需要存取硬件設備,它使用驅動程序,甚至設備是一個bIOS支持的設備。無bIOS支持設備安裝時必須需要驅動,這個驅動是獨立於操作系統的,但是操作系統需要知道從哪裡找到它們,文件名、版本號、其他設置和信息,沒有註冊表對設備的記錄,它們就不能被使用。

當一個用戶準備運行一個應用程序,註冊表提供應用程序信息給操作系統,這樣應用程序可以被找到,正確數據文件的位置被規定,其他設置也都可以被使用。

註冊表保存關於缺省數據和輔助文件的位置信息、菜單、按鈕條、窗口狀態和其他可選項。它同樣也保存了安裝信息(比如說日期),安裝軟件的用戶,軟件版本號和日期,序列號等。根據安裝軟件的不同,它包括的信息也不同。

然而,一般來說,註冊表控制所有32位應用程序和驅動,控制的方法是基於用戶和計算機的,而不依賴於應用程序或驅動,每個註冊表的參數項控制了一個用戶的功能或者計算機功能。用戶功能可能包括了桌面外觀和用戶目錄。所以,計算機功能和安裝的硬件和軟件有關,對所以用戶來說項都是公用的。

有些程序功能對用戶有影響,有些時作用於計算機而不是為個人設置的,同樣的,驅動可能是用戶指定的,但在很多時候,它們在計算機中是通用的。

註冊表控制用戶模式的例子有:

控制面板功能;

桌面外觀和圖標;

網絡參數;

瀏覽器功能性和特徵;

那些功能中的某些是和用戶無關的,有些是針對用戶的。

計算機相關控制項基於計算機名,和登陸用戶無關。控制類型的例子是安裝一個應用程序,不管是哪個用戶,程序的可用性和存取是不變的,然而,運行程序圖標依賴於網絡上登陸的用戶。網絡協議可用性和優先權基於計算機,但是當前連接和用戶信息相關。

這裡是在註冊表中基與計算機控制條目的一些例子:

存取控制;

登陸確認;

文件和打印機共享;

網卡設置和協議;

系統性能和虛擬內存設置;

沒有了註冊表,Win95和Winnt就不太可能存在。它們實在太複雜了,以致於用過去的.ini文件無法控制,它們的擴展能力需要幾乎無限制的安裝和使用應用程序,註冊表實現了它。然而,註冊表比.ini文件更複雜,理解它如何工作,它做什麼和如何用它來做是有效管理系統的關鍵。

在系統中註冊表控制所有32位應用程序和它們的功能及多個應用程序的交互,比如複製和粘貼,它也控制所有的硬件和驅動程序。雖然多數可以通過控制面板來安裝和設置,理解註冊表仍是做Winnt和Win95系統管理基本常識。



,