什麼是注冊表
Windows注冊表是幫助Windows控制硬件軟件用戶環境和Windows界面的一套數據文件注冊表包含在Windows目錄下兩個文件systemdat和userdat裡還有它們的備份systemda和userda通過Windows目錄下的regeditexe程序可以存取注冊表數據庫在以前在windows的更早版本(在Win以前)這些功能是靠wininisystemini和其他和應用程序有關聯的ini文件來實現的
在windows操作系統家族中systemini和winini這兩個文件包含了操作系統所有的控制功能和應用程序的信息systemini管理計算機硬件而winini管理桌面和應用程序所有驅動字體設置和參數會保存在ini文件中任何新程序都會被記錄在ini文件中這些記錄會在程序代碼中被引用因為受winini和systemini文件大小的限制程序員添加輔助的INI文件以用來控制更多的應用程序舉例來說微軟的Excel有一個excelini文件它包含著選項設置缺省參數和其他關系到Excel運行正常的信息在systemini和winini中只需要指出excelini的路徑和文件名即可
注冊表的演化
早在Dos和Winx的時代大部分的應用程序都是采用了 ini 文件(初始化文件)來保存一些配置信息如設置路徑環境變量等systemini和winini控制著所有windows和應用程序的特征和存取方法它在少數的用戶和少數應用程序的環境中工作的很好隨著應用程序的數量和復雜性越來越大則需要在ini文件中添加更多的參數項這樣下來在一個變化的環境中在應用程序安裝到系統中後每個人都會更改ini文件然而沒有一個人在刪除應用程序後刪除ini文件中的相關設置所以systemini和winini這個兩個文件會變的越來越大每增加的內容會導致系統性能越來越慢而且每次應用程序的升級都出現這樣的難題:升級會增加更多的參數項但是從來不去掉舊的設置而且還有一個明顯的問題一個ini文件的最大尺寸是KB為了解決這個問題軟件商自己開始支持自己的ini文件然後指向特定的ini文件如winini和systemini文件這樣下來多個ini文件影響了系統正常的存取級別設置如果一個應用程序的ini文件和WININI文件設置起沖突究竟是誰的優先級更高呢?
注冊表最初被設計為一個應用程序的數據文件相關參考文件最後擴展成對於位操作系統和應用程序包括了所有功能下的東東注冊表是一套控制操作系統外表和如何響應外來事件工作的文件這些事件的范圍從直接存取一個硬件設備到接口如何響應特定用戶到應用程序如何運行等等注冊表因為它的目的和性質變的很復雜它被設計為專門為位應用程序工作文件的大小被限制在大約MB利用一個功能強大的注冊表數據庫來統一集中地管理系統硬件設施軟件配置等信息從而方便了管理增強了系統的穩定性最直觀的一個實例就是為什麼windows下的不同用戶可以擁有各自的個性化設置如不同的牆紙不同的桌面這就是通過注冊表來實現的
由此可見注冊表(Registry)是Windowsx/Me/NT/操作系統硬件設備以及客戶應用程序得以正常運行和保存設置的核心數據庫是一個巨大的樹狀分層的數據庫它記錄了用戶安裝在機器上的軟件和每個程序的相互關聯關系它包含了計算機的硬件配置包括自動配置的即插即用的設備和已有的各種設備說明狀態屬性以及各種狀態信息和數據等
注冊表的應用
二注冊表都做些什麼?
注冊表是為Windows NT和Windows中所有位硬件/驅動和位應用程序設計的數據文件位驅動在Windows NT下無法工作所以所有設備都通過注冊表來控制一般這些是通過BIOS來控制的在Winx下位驅動會繼續以實模式方式設備工作它們使用systemini來控制位應用程序會工作在NT或者Winx 下它們的程序仍然會參考winini和systemini文件獲得信息和控制
在沒有注冊表的情況下操作系統不會獲得必須的信息來運行和控制附屬的設備和應用程序及正確響應用戶的輸入
在系統中注冊表是一個記錄位驅動的設置和位置的數據庫當操作系統需要存取硬件設備它使用驅動程序甚至設備是一個BIOS支持的設備無BIOS支持的設備安裝時必須需要驅動這個驅動是獨立於操作系統的但是操作系統需要知道從哪裡找到它們文件名版本號其他設置和信息沒有注冊表對設備的記錄它們就不能被使用
注冊表控制用戶模式的例子有:
★控制面板功能
★桌面外觀和圖標
★網絡參數
★浏覽器功能性和特征
這些功能中的某些是和用戶無關的有些是針對用戶的
如何調用注冊表
在windows的開始/運行菜單中輸入regedit你就可以通過注冊表編輯器看到注冊表注冊表是什麼呢?簡單地說它是用來對windows操作系統進行配置的一個工具通過它可以對操作系統及應用軟件進行優化可以自己設置windows的使用權限可以解決硬件及網絡設置不當帶來的故障甚至可以改造自己的操作系統
在windows X時代主要通過WININI及SYSTEMINI對windows進行配置但WININI及SYSTEMINI文件存在著安全性不高大小受限制等問題為了解這一問題microsoft公司在WINDOWS以後的版本中引入了注冊表這一便更好的對windows系統進行配置這就是為什麼我們要使用注冊表的原因
注冊表的作用是保存程序所需要的信息當程序需要這些信息時就從注冊表裡讀出因此注冊表最基本的功能就是保存信息
當了解了注冊表的主要功能保存信息後再來了解其保存信息後再來了解保存信息所發揮的作用!
記錄安裝信息;
設置硬件屬性;
定制WINDOWS以及應用軟件
注冊表邏輯結構中最基本的是主鍵子鍵鍵值項以及鍵值它們是按照分組的方式來管理和組織的首先是最底根鍵每個根鍵下有若干個子鍵每個子鍵下又可以有若干(一個或多個)子鍵子鍵下可以有一個或多個鍵值項和鍵值
根鍵注冊表中最底層的鍵類似於磁盤上的根目錄
子鍵子鍵位於根鍵下又可以嵌套其他子鍵中在注冊表的六大根鍵中有若干的子鍵而每個子鍵中又可以嵌套成千上萬的子鍵
鍵值項與鍵值
鍵值項與鍵值:
在每個根鍵和子鍵下可以有若干鍵值這種結構類似於磁盤上根目錄和子目錄裡的文件和文件內容
windows x注冊表邏輯結構中包含六個根鍵每個根鍵包含著分類不同的信息!在windowsNT//XP中如果用windows自帶的編輯器打開的時候只能看到五個還有一個隱藏的根鍵:HKEY_PERFOR_MANCE_DATA
*HKEY_CLASS_ROOT
記錄windows操作系統中所有數據文件的格式和關聯信息主要記錄不同文件的文件名後綴和與之對應的應用程序其下子鍵可分為兩類:一類是已經注冊的各類文件的擴展名這類子鍵前面都帶有一個;另一類是各類文件類型有關信息
*HKEY_CURRENT_USER
此根根鍵包含當前登錄用戶的用戶配置文件信息這些信息保證不同的用戶登錄計算機時使用自己的修改化設置例如自己定義的牆紙自己的收件箱自己的安全訪問權限
*HKEY_LOCAL_MACHINE
此根鍵包含了當前計算機的配置靈氣包括所安裝的硬件以軟件設置這些信息是為所有的用戶登錄系統服務的這是事個注冊表中最龐大也是最重要的根鍵!
*HKEY_USERS
HKEY_USERS根鍵包括默認用戶的信息(DEFAULT子鍵)和所有以前登陸用戶的信息
*HKEY_CURRENT_CONFIG
此根鍵實際上是HKDY_LOCAL_MACHINE/CONFIG/分支下的數據完全一樣
*HKEY_DYN_DATA根鍵
這個鍵保存每次系統啟動時創建的系統配置和當前性能信息這個根鍵只存在於windows X中
*HKEY_PERFORMANCE_DATA
在windowsNT//XP注冊表中雖然沒有HKEY_DYN_DAT鍵但是它卻隱藏了一個名為HKEY_PERFORMANCE_DATA的鍵所有系統中的動態信息都是存放在此子鍵中系統自帶的注冊表編輯器無法看到些鍵介可以用專門的程序來查看此鍵比如使用性能監視器
From:http://tw.wingwit.com/Article/os/xtgl/201311/8940.html