寫給電腦初學者的一些建議(注冊表篇)
更新時間:2008年03月19日 17:57:15 作者:
在上篇文章中對新手朋友們關心的安全問題做了一點小小的闡述。今天,再就WIN系統(tǒng)中的注冊表問題跟大家做個探討。說實話,注冊表問題很難寫,不光是因為牽涉到了很多新手朋友們頭疼的技術問題,而且覆蓋面廣、涉及的內(nèi)容多,也很容易看花眼,但總是要寫的,所以,如果新手朋友一下看不懂的話,建議多看幾遍,多動手多驗證,這樣對提高你們對電腦的了解和維護都有很大的裨益。
有人曾經(jīng)說過,了解了注冊表就讀懂了WIN系統(tǒng),這句話是一點都不假的。那么,什么是注冊表?注冊表有什么功能?如何去修改注冊表以達到最佳的效果?又如何來區(qū)分注冊表里有用和無用甚至是危害的部分呢?
什么是注冊表?在還是使用Dos和Win3.x操作系統(tǒng)的時代里,大部分的應用程序都采用了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ù)項但是從來不去掉舊的參數(shù)設置。而且還有一個明顯的問題,一個.ini文件的最大尺寸是64KB。為了能夠解決這個問題,軟件商自己開始支持自己的.ini文件,然后指向特定的ini文件,這樣下來多個.ini文件影響了系統(tǒng)正常的存取級別設置。
在windows操作系統(tǒng)序列里,system.ini和win.ini這兩個文件包含了操作系統(tǒng)的所有控制功能和應用程序的信息,system.ini管理計算機硬件,win.ini管理桌面和應用程序。所有驅動、字體、設置和參數(shù)會保存在.ini文件中,任何新程序都會被記錄在.ini文件里。這些記錄會在程序代碼中被引用。因為受win.ini和system.ini文件大小的限制,程序員添加輔助的.INI文件以用來控制更多的應用程序。舉例來說,微軟的Word有一個word.ini文件,它包含著選項、設置、缺省參數(shù)和其他關系到Word運行正常的信息。在system.ini和win.ini中只需要指出word.ini的路徑和文件名即可。
為了解決相關的問題,微軟公司于1995年正式推出了取代了WIN3.X操作系統(tǒng)的WIN95,從某中程度上來說,WIN95的出現(xiàn)是一個劃時代的產(chǎn)物,因為Windows95第一次使用了“注冊表”來配置和管理許多即插即用或者必備的硬件,以及臨時調(diào)用或永久駐留的軟件程序。這使得Windows95成為真正意義上的32位操作系統(tǒng),具有了微機操作系統(tǒng)的五大基本功能。這也使得注冊表這個東西第一次出現(xiàn)在了眾人的視線中。
注冊表最初被設計為一個應用程序的數(shù)據(jù)文件相關參考文件,最后擴展成對32位操作系統(tǒng)和應用程序包括了所有功能下的東西。注冊表是一套控制操作系統(tǒng)外表和如何響應外來事件工作的文件。這些“事件”的范圍從直接存取一個硬件設備到接口,如何響應特定用戶到應用程序如何運行等。注冊表因它的目的和性質(zhì)變的很復雜,它被設計為專門的針對32位應用程序工作,文件的大小被限制在大約40MB。利用一個功能強大的注冊表數(shù)據(jù)庫來統(tǒng)一集中地管理系統(tǒng)硬件設施,軟件配置等信息,從而方便了管理,增強了系統(tǒng)的穩(wěn)定性。
由此可見,注冊表(Registry)是Windows95以上版本操作系統(tǒng)中硬件設備以及客戶應用程序得以正常運行和保存設置的核心“數(shù)據(jù)庫”;也可以說是一個非常巨大的樹狀分層結構的數(shù)據(jù)庫系統(tǒng)。它記錄了用戶安裝在機器上的軟件和每個程序的相互關聯(lián)信息;它包含了計算機的硬件配置,包括自動配置的即插即用的設備和已有的各種設備說明、狀態(tài)屬性以及各種狀態(tài)信息和數(shù)據(jù)。
好了,說完了注冊表和它的發(fā)展歷程后,我們來關心一下它的功能。注冊表的一個好處是添加或刪除程序功能,這是開始菜單中控制面板功能的一部分。你安裝軟件的時候,在注冊表中做了一個記錄,所以在添加或刪除程序中就會作為一個專門列表的一部分出現(xiàn)。注冊表保存在你的硬盤的幾個文件當中,但訪問和修改它們的唯一途徑是使用注冊表編輯器程序。要訪問它,點擊開始按鈕,然后點擊運行。在出現(xiàn)的對話框中輸入regedit并按Enter鍵。這會進入注冊表編輯器,你現(xiàn)在就看到了注冊表。

注冊表組織得更像磁盤上的文件,如果你曾經(jīng)在Windows瀏覽器中使用過文件夾視圖的話,你會根據(jù)很熟悉。然而在注冊表中,這些文件夾被稱為鍵。要打開某個鍵,只需點擊它旁邊的小加號(+)。然后你會看到每個鍵下包含更多的鍵,稱為子鍵或值。值是指各種不同鍵的單獨設置,因此是可自定義的。它們在注冊表窗口左側以名稱排列,它們還說明了包含數(shù)據(jù)的類型以及數(shù)據(jù)本身。不用擔心使用的是哪種數(shù)據(jù)類型,因為這對數(shù)據(jù)本身是明顯的,或者在編輯過程中會作出解釋。這些數(shù)以千計的鍵根據(jù)邏輯進行排列,在你第一次看到注冊表的時候可能會使你感覺無從下手。要把頭緒理清楚,首先要知道有五個根鍵以及注冊表的基本組成結構。

在這里需要提一下的是,隨著使用時間以及大量系統(tǒng)產(chǎn)生的垃圾影響,注冊表會變的越來越大,這并不是一個好現(xiàn)象,因為注冊表越龐大,你的計算機的運行就會變得越慢,所以很多新手朋友在問到為什么自己的計算機越來越慢的時候,很多情況下就是因為你的注冊表內(nèi)無用垃圾太多,所以導致自己的系統(tǒng)運行越來越緩慢,因此,經(jīng)常的給注冊表“瘦瘦身”是很有必要的。當然,現(xiàn)在很多第三方軟件,例如超級兔子、WINDOWS優(yōu)化大師等系統(tǒng)整理軟件都附帶了注冊表垃圾清除功能,建議新手朋友們務必下一個,經(jīng)常優(yōu)化自己的注冊表和系統(tǒng),多研究研究里面的一些配置無論是對計算機的安全和運行都會很有幫助。
下面我們就根據(jù)圖2來逐一解釋:

在windowsNT/2000/XP中,如果用windows自帶的編輯器打開的時候,只能看到五個,還有一個隱藏的根鍵:HKEY_PERFOR_MANCE_DATA。
*HKEY_CLASS_ROOT
記錄windows操作系統(tǒng)中所有數(shù)據(jù)文件的格式和關聯(lián)信息,主要記錄不同文件的文件名后綴和與之對應的應用程序其下子鍵可分為兩類:一類是已經(jīng)注冊的各類文件的擴展名,這類子鍵前面都帶有一個".";另一類是各類文件類型有關信息。
*HKEY_CURRENT_USER
此根根鍵包含當前登錄用戶的用戶配置文件信息,這些信息保證不同的用戶登錄計算機時,使用自己的修改化設置,例如自己定義的墻紙,自己的收件箱,自己的安全訪問權限。
*HKEY_LOCAL_MACHINE
此根鍵包含了當前計算機的配置靈氣,包括所安裝的硬件以軟件設置。這些信息是為所有的用戶登錄系統(tǒng)服務的。這是事個注冊表中最龐大也是最重要的根鍵!
*HKEY_USERS
HKEY_USERS根鍵包括默認用戶的信息(DEFAULT子鍵)和所有以前登陸用戶的信息。
*HKEY_CURRENT_CONFIG
此根鍵實際上是HKDY_LOCAL_MACHINE/CONFIG/0001分支下的數(shù)據(jù)完全一樣。
*HKEY_DYN_DATA根鍵
這個鍵保存每次系統(tǒng)啟動時,創(chuàng)建的系統(tǒng)配置和當前性能信息。這個根鍵只存在于windows9X中
*HKEY_PERFORMANCE_DATA
在windowsNT/2000/XP注冊表中雖然沒有HKEY_DYN_DAT鍵,但是它卻隱藏了一個名為"HKEY_PERFORMANCE_DATA的鍵。所有系統(tǒng)中的動態(tài)信息都是存放在此子鍵中,系統(tǒng)自帶的注冊表編輯器無法看到這些鍵。只可以用專門的程序來查看此鍵,比如使用性能監(jiān)視器。
下面再談談注冊表的修改問題。在這里提醒大家一句,如果你沒有把握,切記在修改之前,一定要備份注冊表。修改注冊表,除了用微軟自帶的編輯器——regedit.exe外,還可以通過第三方軟件進行修改,或者利用手工寫.reg注冊表文件。有沒有試過自己寫注冊表文件?不用任何修改器?直接把寫好的注冊表文件——.reg倒入注冊表?呵呵,這項技巧并不需要每個人都知道了,你只要知道上面的兩個就可以了。當然,如果你是電腦迷,我們贊成深入學習。
現(xiàn)在我們來看看.reg文件的結構如何。
.reg文件的標準格式如下:
REGEDIT4
[路徑](注意用大小寫)
"鍵名"="鍵值"(針對字符串型鍵值)
"鍵名"=hex:鍵值(針對二進制型鍵值)
"鍵名"=dword:鍵值(針對DWORD鍵值)
括號里面的內(nèi)容為本人的注釋,寫文件的時候就不需要那些小括號了,其他上面所列的都必須包括。注意引號輸入時不能用中文輸入的引號,必須用英文的引號,否則會出錯。
那么,怎么寫.reg文件呢?我們需要一個文本編輯器,用windows的記事本就可以了。單擊鼠標右鍵,選擇新建文本文檔,然后在生成的文本文件里輸入上面規(guī)格的內(nèi)容就可以了,最后,選擇另存為,輸入你想要的文件名+.reg保存即可。比如你要生成test.reg,輸入test.reg保存即可,你可以看到生成了一個帶圖標的test.reg.雙擊運行這個test.reg文件就能相應的修改注冊表了,系統(tǒng)會提示“是否導入注冊表”之類的信息,確定就可以了。OK,我們可以手動寫注冊表了。先別急,我們來看看一個標準范例,這是從注冊表里面導出來的,大家慢慢學習,跟著模仿一下就能寫出自己的.reg文件了。
REGEDIT4
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]
"NoRun"=dword:00000000
"NoRecentDocsMenu"=hex:01,00,00,00
"NoFavoritesMenu"=dword:00000000
"user"="sundrink"
大家可以看到,dword是16進制,hex是二進制,字符串則可以直接賦值。只要將上面的內(nèi)容復制保存到文本文檔里,然后另存為你想要的.reg文件運行就可以了。呵呵,原來也不是很難嘛,耐心一點就可以了。當然,你要模仿,要自己動手寫.reg文件,用記事本就可以了。
說多兩句,為什么要手寫注冊表?因為有時候我們會碰到一臺鎖定regedit的機子,有什么辦法解開呢?呵呵,如果你會手寫注冊表文件的話,那很簡單了......大家發(fā)揮想象吧!用不了很長時間的。
以上的手動修改的方法只針對那些電腦愛者來說的,一般新手朋友最好還是老實的用第三方軟件里自帶的方法來修改,這樣既方便又能看的清楚,不過還是建議大家在修改前一定要做好備份工作。好,關于注冊表的修改問題就說到這里了,網(wǎng)上有很多類似的教程,比如提高網(wǎng)速的,優(yōu)化性能的都有很多,大家可以勤用google搜索一下,自己學習。其實電腦很多東西都是自己摸索出來的,只有自己勤去摸索,你的計算機水平才能得到真正的提高。閑話不再多說,我們繼續(xù)。
現(xiàn)在我們說到了注冊表的安全問題。從計算機病毒的發(fā)展趨勢來看,蠕蟲和木馬類的病毒越來越多。與普通感染可執(zhí)行文件的文件型病毒不同,此類程序通常不感染正常的系統(tǒng)文件,而是將自身作為系統(tǒng)的一部分安裝到系統(tǒng)中。相對來說,此類病毒的隱蔽性更強一些,更不容易被使用者發(fā)覺。但是無論什么樣的病毒程序在感染系統(tǒng)時都會留下一些蛛絲馬跡。在此我們總結一下各種病毒可能會更改的地方,以便能夠更快速地找到它們。
一、更改系統(tǒng)的相關配置文件。這種情況主要是針對95/98系統(tǒng)。
病毒可能會更改autoexec.bat,只要在其中加入執(zhí)行病毒程序文件的語句即可在系統(tǒng)啟動時自動激活病毒。*更改drive:\windows\win.ini或者system.ini文件。病毒通常會在win.ini的“run=”后面加入病毒自身的文件名,或者在system.ini文件中將“shell=”更改。
二、更改注冊表健值。
目前,只要新出的蠕蟲/特洛伊類病毒一般都有修改系統(tǒng)注冊表的動作。它們修改的位置一般有以下幾個地方:
HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce\
說明:在系統(tǒng)啟動時自動執(zhí)行的程序
HKLM\Software\Microsoft\Windows\CurrentVersion\RunServices\
說明:在系統(tǒng)啟動時自動執(zhí)行的系統(tǒng)服務程序
HKLM\Software\Microsoft\Windows\CurrentVersion\Run\
說明:在系統(tǒng)啟動時自動執(zhí)行的程序,這是病毒最有可能修改/添加的地方。例如:Win32.Swen.B病毒將增加:HKLM\Software\Microsoft\Windows\CurrentVersion\Run\ucfzyojza="cxsgrhcl.exeautorun"
HKEY_CLASSES_ROOT\exefile\shell\open\command
說明:此鍵值能使病毒在用戶運行任何EXE程序時被運行,以此類推,..\txtfile\..或者..\comfile\..也可被更改,以便實現(xiàn)病毒自動運行的功能。
另外,有些健值還可能被利用來實現(xiàn)比較特別的功能:
有些病毒會通過修改下面的鍵值來阻止用戶查看和修改注冊表:
HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\
System\DisableRegistryTools=
為了阻止用戶利用.REG文件修改注冊表鍵值,以下鍵值也會被修改來顯示一個內(nèi)存訪問錯誤窗口
例如:Win32.Swen.B病毒會將缺省健值修改為:
HKCR\regfile\shell\open\command\(Default)="cxsgrhcl.exeshowerror"
通過對以上地方的修改,病毒程序主要達到的目的是在系統(tǒng)啟動或者程序運行過程中能夠自動被執(zhí)行,已達到自動激活的目的。
總結完了各種木馬、病毒可能會更改的地方,下面就接著談防御問題了。當然,在談之前繼續(xù)一貫強調(diào)的備份注冊表,說實話,應對越來越厲害的木馬、病毒們,光靠現(xiàn)有的幾種辦法是遠遠不夠的,備份一個“徹底干凈”的注冊表就是重中之重。備份的方法依然很多,網(wǎng)上鋪天蓋地都有,這里也不再多做闡述,google一下就可以了。
安全隱患:在Windows2000/XP系統(tǒng)中,默認Messenger服務處于啟動狀態(tài),不懷好意者可通過“netsend”指令向目標計算機發(fā)送信息。目標計算機會不時地收到他人發(fā)來的騷擾信息,嚴重影響正常使用。
解決方法:首先打開注冊表編輯器。對于系統(tǒng)服務來說,我們可以通過注冊表中“HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices”項下的各個選項來進行管理,其中的每個子鍵就是系統(tǒng)中對應的“服務”,如“Messenger”服務對應的子鍵是“Messenger”。我們只要找到Messenger項下的START鍵值,將該值修改為4即可。這樣該服務就會被禁用,用戶就再也不會受到“信”騷擾了。
安全隱患:如果黑客連接到了我們的計算機,而且計算機啟用了遠程注冊表服務(RemoteRegistry),那么黑客就可遠程設置注冊表中的服務,因此遠程注冊表服務需要特別保護。
解決方法:我們可將遠程注冊表服務(RemoteRegistry)的啟動方式設置為禁用。不過,黑客在入侵我們的計算機后,仍然可以通過簡單的操作將該服務從“禁用”轉換為“自動啟動”。因此我們有必要將該服務刪除。
找到注冊表中“HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices”下的RemoteRegistry項,右鍵點擊該項選擇“刪除”(圖1),將該項刪除后就無法啟動該服務了。
在刪除之前,一定要將該項信息導出并保存。想使用該服務時,只要將已保存的注冊表文件導入即可。
安全隱患:大家都知道在Windows2000/XP/2003中,系統(tǒng)默認開啟了一些“共享”,它們是IPC$、c$、d$、e$和admin$。很多黑客和病毒都是通過這個默認共享入侵操作系統(tǒng)的。
解決方法:要防范IPC$攻擊應該將注冊表中“HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLSA”的RestrictAnonymous項設置為“1”,這樣就可以禁止IPC$的連接。
對于c$、d$和admin$等類型的默認共享則需要在注冊表中找到“HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesLanmanServerParameters”項。如果系統(tǒng)為Windows2000Server或Windows2003,則要在該項中添加鍵值“AutoShareServer”(類型為“REG_DWORD”,值為“0”)。如果系統(tǒng)為Windows2000PRO,則應在該項中添加鍵值“AutoShareWks”(類型為“REG_DWORD”,值為“0”)。
安全隱患:在Windows系統(tǒng)運行出錯的時候,系統(tǒng)內(nèi)部有一個DR.WATSON程序會自動將系統(tǒng)調(diào)用的隱私信息保存下來。隱私信息將保存在user.dmp和drwtsn32.log文件中。攻擊者可以通過破解這個程序而了解系統(tǒng)的隱私信息。因此我們要阻止該程序將信息泄露出去。
解決方法:找到“HKEY_LOACL_MACHINESOFTWAREMicrosoftWindowsNTCurrentVersionAeDebug”,將AUTO鍵值設置為0,現(xiàn)在DR.WATSON就不會記錄系統(tǒng)運行時的出錯信息了。同時,依次點擊“DocumentsandSettings→ALLUsers→Documents→drwatson”,找到user.dmp和drwtsn32.log文件并刪除。刪除這兩個文件的目的是將DR.WATSON以前保存的隱私信息刪除。
提示:如果已經(jīng)禁止了DR.WATSON程序的運行,則不會找到“drwatson”文件夾以及user.dmp和drwtsn32.log這兩個文件。
安全隱患:不少木馬和病毒都是通過在網(wǎng)頁中隱藏惡意ActiveX控件的方法來私自運行系統(tǒng)中的程序,從而達到破壞本地系統(tǒng)的目的。為了保證系統(tǒng)安全,我們應該阻止ActiveX控件私自運行程序。
解決方法:ActiveX控件是通過調(diào)用Windowsscriptinghost組件的方式運行程序的,所以我們可以先刪除“system32”目錄下的wshom.ocx文件,這樣ActiveX控件就不能調(diào)用Windowsscriptinghost了。然后,在注冊表中找到“HKEY_LOCAL_MACHINESOFTWAREClassesCLSID{F935DC22-1CF0-11D0-ADB9-00C04FD58A0B}”,將該項刪除。通過以上操作,ActiveX控件就再也無法私自調(diào)用腳本程序了。
安全隱患:Windows2000的頁面交換文件也和上文提到的DR.WATSON程序一樣經(jīng)常成為黑客攻擊的對象,因為頁面文件有可能泄露一些原本在內(nèi)存中后來卻轉到硬盤中的信息。畢竟黑客不太容易查看內(nèi)存中的信息,而硬盤中的信息則極易被獲取。
解決方法:找到“HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSessionManagerMemoryManagement”,將其下的ClearPageFileAtShutdown項目的值設置為1(圖2)。
這樣,每當重新啟動后,系統(tǒng)都會將頁面文件刪除,從而有效防止信息外泄。
安全隱患:使用Windows系統(tǒng)沖浪時,常會遇到密碼信息被系統(tǒng)自動記錄的情況,以后重新訪問時系統(tǒng)會自動填寫密碼。這樣很容易造成自己的隱私信息外泄。
解決方法:在“HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionpolicies”分支中找到network子項(如果沒有可自行添加),在該子項下建立一個新的雙字節(jié)值,名稱為disablepasswordcaching,并將該值設置為1。重新啟動計算機后,操作系統(tǒng)就不會自作聰明地記錄密碼了。
安全隱患:現(xiàn)在的病毒很聰明,不像以前只會通過注冊表的RUN值或MSCONFIG中的項目進行加載。一些高級病毒會通過系統(tǒng)服務進行加載。那么,我們能不能使病毒或木馬沒有啟動服務的相應權限呢?
解決方法:運行“regedt32”指令啟用帶權限分配功能的注冊表編輯器。在注冊表中找到“HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices”分支,接著點擊菜單欄中的“安全→權限”,在彈出的Services權限設置窗口中單擊“添加”按鈕,將Everyone賬號導入進來,然后選中“Everyone”賬號,將該賬號的“讀取”權限設置為“允許”,將它的“完全控制”權限取消(圖3)?,F(xiàn)在任何木馬或病毒都無法自行啟動系統(tǒng)服務了。當然,該方法只對沒有獲得管理員權限的病毒和木馬有效。
安全隱患:很多病毒都是通過注冊表中的RUN值進行加載而實現(xiàn)隨操作系統(tǒng)的啟動而啟動的,我們可以按照“禁止病毒啟動服務”中介紹的方法將病毒和木馬對該鍵值的修改權限去掉。
解決方法:運行“regedt32”指令啟動注冊表編輯器。找到注冊表中的“HKEY_CURRENT_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRUN”分支,將Everyone對該分支的“讀取”權限設置為“允許”,取消對“完全控制”權限的選擇。這樣病毒和木馬就無法通過該鍵值啟動自身了。
病毒和木馬是不斷“發(fā)展”的,我們也要不斷學習新的防護知識,才能抵御病毒和木馬的入侵。與其在感染病毒或木馬后再進行查殺,不如提前做好防御工作,修筑好牢固的城墻進行抵御。養(yǎng)成良好的安全上網(wǎng)習慣,盡量不接觸那些不安全的站點和下載不安全的軟件、視頻等,開機運行360和殺毒軟件,備份一份安全的注冊表文件,勤打補丁多學習,“防患于未然”才是我們應該追求的。
PS:本文在書寫過程中引用了網(wǎng)絡上的一些內(nèi)容,在此,對那些默默奉獻出自己知識的無名朋友們表示感謝!
什么是注冊表?在還是使用Dos和Win3.x操作系統(tǒng)的時代里,大部分的應用程序都采用了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ù)項但是從來不去掉舊的參數(shù)設置。而且還有一個明顯的問題,一個.ini文件的最大尺寸是64KB。為了能夠解決這個問題,軟件商自己開始支持自己的.ini文件,然后指向特定的ini文件,這樣下來多個.ini文件影響了系統(tǒng)正常的存取級別設置。
在windows操作系統(tǒng)序列里,system.ini和win.ini這兩個文件包含了操作系統(tǒng)的所有控制功能和應用程序的信息,system.ini管理計算機硬件,win.ini管理桌面和應用程序。所有驅動、字體、設置和參數(shù)會保存在.ini文件中,任何新程序都會被記錄在.ini文件里。這些記錄會在程序代碼中被引用。因為受win.ini和system.ini文件大小的限制,程序員添加輔助的.INI文件以用來控制更多的應用程序。舉例來說,微軟的Word有一個word.ini文件,它包含著選項、設置、缺省參數(shù)和其他關系到Word運行正常的信息。在system.ini和win.ini中只需要指出word.ini的路徑和文件名即可。
為了解決相關的問題,微軟公司于1995年正式推出了取代了WIN3.X操作系統(tǒng)的WIN95,從某中程度上來說,WIN95的出現(xiàn)是一個劃時代的產(chǎn)物,因為Windows95第一次使用了“注冊表”來配置和管理許多即插即用或者必備的硬件,以及臨時調(diào)用或永久駐留的軟件程序。這使得Windows95成為真正意義上的32位操作系統(tǒng),具有了微機操作系統(tǒng)的五大基本功能。這也使得注冊表這個東西第一次出現(xiàn)在了眾人的視線中。
注冊表最初被設計為一個應用程序的數(shù)據(jù)文件相關參考文件,最后擴展成對32位操作系統(tǒng)和應用程序包括了所有功能下的東西。注冊表是一套控制操作系統(tǒng)外表和如何響應外來事件工作的文件。這些“事件”的范圍從直接存取一個硬件設備到接口,如何響應特定用戶到應用程序如何運行等。注冊表因它的目的和性質(zhì)變的很復雜,它被設計為專門的針對32位應用程序工作,文件的大小被限制在大約40MB。利用一個功能強大的注冊表數(shù)據(jù)庫來統(tǒng)一集中地管理系統(tǒng)硬件設施,軟件配置等信息,從而方便了管理,增強了系統(tǒng)的穩(wěn)定性。
由此可見,注冊表(Registry)是Windows95以上版本操作系統(tǒng)中硬件設備以及客戶應用程序得以正常運行和保存設置的核心“數(shù)據(jù)庫”;也可以說是一個非常巨大的樹狀分層結構的數(shù)據(jù)庫系統(tǒng)。它記錄了用戶安裝在機器上的軟件和每個程序的相互關聯(lián)信息;它包含了計算機的硬件配置,包括自動配置的即插即用的設備和已有的各種設備說明、狀態(tài)屬性以及各種狀態(tài)信息和數(shù)據(jù)。
好了,說完了注冊表和它的發(fā)展歷程后,我們來關心一下它的功能。注冊表的一個好處是添加或刪除程序功能,這是開始菜單中控制面板功能的一部分。你安裝軟件的時候,在注冊表中做了一個記錄,所以在添加或刪除程序中就會作為一個專門列表的一部分出現(xiàn)。注冊表保存在你的硬盤的幾個文件當中,但訪問和修改它們的唯一途徑是使用注冊表編輯器程序。要訪問它,點擊開始按鈕,然后點擊運行。在出現(xiàn)的對話框中輸入regedit并按Enter鍵。這會進入注冊表編輯器,你現(xiàn)在就看到了注冊表。

注冊表組織得更像磁盤上的文件,如果你曾經(jīng)在Windows瀏覽器中使用過文件夾視圖的話,你會根據(jù)很熟悉。然而在注冊表中,這些文件夾被稱為鍵。要打開某個鍵,只需點擊它旁邊的小加號(+)。然后你會看到每個鍵下包含更多的鍵,稱為子鍵或值。值是指各種不同鍵的單獨設置,因此是可自定義的。它們在注冊表窗口左側以名稱排列,它們還說明了包含數(shù)據(jù)的類型以及數(shù)據(jù)本身。不用擔心使用的是哪種數(shù)據(jù)類型,因為這對數(shù)據(jù)本身是明顯的,或者在編輯過程中會作出解釋。這些數(shù)以千計的鍵根據(jù)邏輯進行排列,在你第一次看到注冊表的時候可能會使你感覺無從下手。要把頭緒理清楚,首先要知道有五個根鍵以及注冊表的基本組成結構。

在這里需要提一下的是,隨著使用時間以及大量系統(tǒng)產(chǎn)生的垃圾影響,注冊表會變的越來越大,這并不是一個好現(xiàn)象,因為注冊表越龐大,你的計算機的運行就會變得越慢,所以很多新手朋友在問到為什么自己的計算機越來越慢的時候,很多情況下就是因為你的注冊表內(nèi)無用垃圾太多,所以導致自己的系統(tǒng)運行越來越緩慢,因此,經(jīng)常的給注冊表“瘦瘦身”是很有必要的。當然,現(xiàn)在很多第三方軟件,例如超級兔子、WINDOWS優(yōu)化大師等系統(tǒng)整理軟件都附帶了注冊表垃圾清除功能,建議新手朋友們務必下一個,經(jīng)常優(yōu)化自己的注冊表和系統(tǒng),多研究研究里面的一些配置無論是對計算機的安全和運行都會很有幫助。
下面我們就根據(jù)圖2來逐一解釋:

在windowsNT/2000/XP中,如果用windows自帶的編輯器打開的時候,只能看到五個,還有一個隱藏的根鍵:HKEY_PERFOR_MANCE_DATA。
*HKEY_CLASS_ROOT
記錄windows操作系統(tǒng)中所有數(shù)據(jù)文件的格式和關聯(lián)信息,主要記錄不同文件的文件名后綴和與之對應的應用程序其下子鍵可分為兩類:一類是已經(jīng)注冊的各類文件的擴展名,這類子鍵前面都帶有一個".";另一類是各類文件類型有關信息。
*HKEY_CURRENT_USER
此根根鍵包含當前登錄用戶的用戶配置文件信息,這些信息保證不同的用戶登錄計算機時,使用自己的修改化設置,例如自己定義的墻紙,自己的收件箱,自己的安全訪問權限。
*HKEY_LOCAL_MACHINE
此根鍵包含了當前計算機的配置靈氣,包括所安裝的硬件以軟件設置。這些信息是為所有的用戶登錄系統(tǒng)服務的。這是事個注冊表中最龐大也是最重要的根鍵!
*HKEY_USERS
HKEY_USERS根鍵包括默認用戶的信息(DEFAULT子鍵)和所有以前登陸用戶的信息。
*HKEY_CURRENT_CONFIG
此根鍵實際上是HKDY_LOCAL_MACHINE/CONFIG/0001分支下的數(shù)據(jù)完全一樣。
*HKEY_DYN_DATA根鍵
這個鍵保存每次系統(tǒng)啟動時,創(chuàng)建的系統(tǒng)配置和當前性能信息。這個根鍵只存在于windows9X中
*HKEY_PERFORMANCE_DATA
在windowsNT/2000/XP注冊表中雖然沒有HKEY_DYN_DAT鍵,但是它卻隱藏了一個名為"HKEY_PERFORMANCE_DATA的鍵。所有系統(tǒng)中的動態(tài)信息都是存放在此子鍵中,系統(tǒng)自帶的注冊表編輯器無法看到這些鍵。只可以用專門的程序來查看此鍵,比如使用性能監(jiān)視器。
下面再談談注冊表的修改問題。在這里提醒大家一句,如果你沒有把握,切記在修改之前,一定要備份注冊表。修改注冊表,除了用微軟自帶的編輯器——regedit.exe外,還可以通過第三方軟件進行修改,或者利用手工寫.reg注冊表文件。有沒有試過自己寫注冊表文件?不用任何修改器?直接把寫好的注冊表文件——.reg倒入注冊表?呵呵,這項技巧并不需要每個人都知道了,你只要知道上面的兩個就可以了。當然,如果你是電腦迷,我們贊成深入學習。
現(xiàn)在我們來看看.reg文件的結構如何。
.reg文件的標準格式如下:
REGEDIT4
[路徑](注意用大小寫)
"鍵名"="鍵值"(針對字符串型鍵值)
"鍵名"=hex:鍵值(針對二進制型鍵值)
"鍵名"=dword:鍵值(針對DWORD鍵值)
括號里面的內(nèi)容為本人的注釋,寫文件的時候就不需要那些小括號了,其他上面所列的都必須包括。注意引號輸入時不能用中文輸入的引號,必須用英文的引號,否則會出錯。
那么,怎么寫.reg文件呢?我們需要一個文本編輯器,用windows的記事本就可以了。單擊鼠標右鍵,選擇新建文本文檔,然后在生成的文本文件里輸入上面規(guī)格的內(nèi)容就可以了,最后,選擇另存為,輸入你想要的文件名+.reg保存即可。比如你要生成test.reg,輸入test.reg保存即可,你可以看到生成了一個帶圖標的test.reg.雙擊運行這個test.reg文件就能相應的修改注冊表了,系統(tǒng)會提示“是否導入注冊表”之類的信息,確定就可以了。OK,我們可以手動寫注冊表了。先別急,我們來看看一個標準范例,這是從注冊表里面導出來的,大家慢慢學習,跟著模仿一下就能寫出自己的.reg文件了。
REGEDIT4
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]
"NoRun"=dword:00000000
"NoRecentDocsMenu"=hex:01,00,00,00
"NoFavoritesMenu"=dword:00000000
"user"="sundrink"
大家可以看到,dword是16進制,hex是二進制,字符串則可以直接賦值。只要將上面的內(nèi)容復制保存到文本文檔里,然后另存為你想要的.reg文件運行就可以了。呵呵,原來也不是很難嘛,耐心一點就可以了。當然,你要模仿,要自己動手寫.reg文件,用記事本就可以了。
說多兩句,為什么要手寫注冊表?因為有時候我們會碰到一臺鎖定regedit的機子,有什么辦法解開呢?呵呵,如果你會手寫注冊表文件的話,那很簡單了......大家發(fā)揮想象吧!用不了很長時間的。
以上的手動修改的方法只針對那些電腦愛者來說的,一般新手朋友最好還是老實的用第三方軟件里自帶的方法來修改,這樣既方便又能看的清楚,不過還是建議大家在修改前一定要做好備份工作。好,關于注冊表的修改問題就說到這里了,網(wǎng)上有很多類似的教程,比如提高網(wǎng)速的,優(yōu)化性能的都有很多,大家可以勤用google搜索一下,自己學習。其實電腦很多東西都是自己摸索出來的,只有自己勤去摸索,你的計算機水平才能得到真正的提高。閑話不再多說,我們繼續(xù)。
現(xiàn)在我們說到了注冊表的安全問題。從計算機病毒的發(fā)展趨勢來看,蠕蟲和木馬類的病毒越來越多。與普通感染可執(zhí)行文件的文件型病毒不同,此類程序通常不感染正常的系統(tǒng)文件,而是將自身作為系統(tǒng)的一部分安裝到系統(tǒng)中。相對來說,此類病毒的隱蔽性更強一些,更不容易被使用者發(fā)覺。但是無論什么樣的病毒程序在感染系統(tǒng)時都會留下一些蛛絲馬跡。在此我們總結一下各種病毒可能會更改的地方,以便能夠更快速地找到它們。
一、更改系統(tǒng)的相關配置文件。這種情況主要是針對95/98系統(tǒng)。
病毒可能會更改autoexec.bat,只要在其中加入執(zhí)行病毒程序文件的語句即可在系統(tǒng)啟動時自動激活病毒。*更改drive:\windows\win.ini或者system.ini文件。病毒通常會在win.ini的“run=”后面加入病毒自身的文件名,或者在system.ini文件中將“shell=”更改。
二、更改注冊表健值。
目前,只要新出的蠕蟲/特洛伊類病毒一般都有修改系統(tǒng)注冊表的動作。它們修改的位置一般有以下幾個地方:
HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce\
說明:在系統(tǒng)啟動時自動執(zhí)行的程序
HKLM\Software\Microsoft\Windows\CurrentVersion\RunServices\
說明:在系統(tǒng)啟動時自動執(zhí)行的系統(tǒng)服務程序
HKLM\Software\Microsoft\Windows\CurrentVersion\Run\
說明:在系統(tǒng)啟動時自動執(zhí)行的程序,這是病毒最有可能修改/添加的地方。例如:Win32.Swen.B病毒將增加:HKLM\Software\Microsoft\Windows\CurrentVersion\Run\ucfzyojza="cxsgrhcl.exeautorun"
HKEY_CLASSES_ROOT\exefile\shell\open\command
說明:此鍵值能使病毒在用戶運行任何EXE程序時被運行,以此類推,..\txtfile\..或者..\comfile\..也可被更改,以便實現(xiàn)病毒自動運行的功能。
另外,有些健值還可能被利用來實現(xiàn)比較特別的功能:
有些病毒會通過修改下面的鍵值來阻止用戶查看和修改注冊表:
HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\
System\DisableRegistryTools=
為了阻止用戶利用.REG文件修改注冊表鍵值,以下鍵值也會被修改來顯示一個內(nèi)存訪問錯誤窗口
例如:Win32.Swen.B病毒會將缺省健值修改為:
HKCR\regfile\shell\open\command\(Default)="cxsgrhcl.exeshowerror"
通過對以上地方的修改,病毒程序主要達到的目的是在系統(tǒng)啟動或者程序運行過程中能夠自動被執(zhí)行,已達到自動激活的目的。
總結完了各種木馬、病毒可能會更改的地方,下面就接著談防御問題了。當然,在談之前繼續(xù)一貫強調(diào)的備份注冊表,說實話,應對越來越厲害的木馬、病毒們,光靠現(xiàn)有的幾種辦法是遠遠不夠的,備份一個“徹底干凈”的注冊表就是重中之重。備份的方法依然很多,網(wǎng)上鋪天蓋地都有,這里也不再多做闡述,google一下就可以了。
安全隱患:在Windows2000/XP系統(tǒng)中,默認Messenger服務處于啟動狀態(tài),不懷好意者可通過“netsend”指令向目標計算機發(fā)送信息。目標計算機會不時地收到他人發(fā)來的騷擾信息,嚴重影響正常使用。
解決方法:首先打開注冊表編輯器。對于系統(tǒng)服務來說,我們可以通過注冊表中“HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices”項下的各個選項來進行管理,其中的每個子鍵就是系統(tǒng)中對應的“服務”,如“Messenger”服務對應的子鍵是“Messenger”。我們只要找到Messenger項下的START鍵值,將該值修改為4即可。這樣該服務就會被禁用,用戶就再也不會受到“信”騷擾了。
安全隱患:如果黑客連接到了我們的計算機,而且計算機啟用了遠程注冊表服務(RemoteRegistry),那么黑客就可遠程設置注冊表中的服務,因此遠程注冊表服務需要特別保護。
解決方法:我們可將遠程注冊表服務(RemoteRegistry)的啟動方式設置為禁用。不過,黑客在入侵我們的計算機后,仍然可以通過簡單的操作將該服務從“禁用”轉換為“自動啟動”。因此我們有必要將該服務刪除。
找到注冊表中“HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices”下的RemoteRegistry項,右鍵點擊該項選擇“刪除”(圖1),將該項刪除后就無法啟動該服務了。
在刪除之前,一定要將該項信息導出并保存。想使用該服務時,只要將已保存的注冊表文件導入即可。
安全隱患:大家都知道在Windows2000/XP/2003中,系統(tǒng)默認開啟了一些“共享”,它們是IPC$、c$、d$、e$和admin$。很多黑客和病毒都是通過這個默認共享入侵操作系統(tǒng)的。
解決方法:要防范IPC$攻擊應該將注冊表中“HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLSA”的RestrictAnonymous項設置為“1”,這樣就可以禁止IPC$的連接。
對于c$、d$和admin$等類型的默認共享則需要在注冊表中找到“HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesLanmanServerParameters”項。如果系統(tǒng)為Windows2000Server或Windows2003,則要在該項中添加鍵值“AutoShareServer”(類型為“REG_DWORD”,值為“0”)。如果系統(tǒng)為Windows2000PRO,則應在該項中添加鍵值“AutoShareWks”(類型為“REG_DWORD”,值為“0”)。
安全隱患:在Windows系統(tǒng)運行出錯的時候,系統(tǒng)內(nèi)部有一個DR.WATSON程序會自動將系統(tǒng)調(diào)用的隱私信息保存下來。隱私信息將保存在user.dmp和drwtsn32.log文件中。攻擊者可以通過破解這個程序而了解系統(tǒng)的隱私信息。因此我們要阻止該程序將信息泄露出去。
解決方法:找到“HKEY_LOACL_MACHINESOFTWAREMicrosoftWindowsNTCurrentVersionAeDebug”,將AUTO鍵值設置為0,現(xiàn)在DR.WATSON就不會記錄系統(tǒng)運行時的出錯信息了。同時,依次點擊“DocumentsandSettings→ALLUsers→Documents→drwatson”,找到user.dmp和drwtsn32.log文件并刪除。刪除這兩個文件的目的是將DR.WATSON以前保存的隱私信息刪除。
提示:如果已經(jīng)禁止了DR.WATSON程序的運行,則不會找到“drwatson”文件夾以及user.dmp和drwtsn32.log這兩個文件。
安全隱患:不少木馬和病毒都是通過在網(wǎng)頁中隱藏惡意ActiveX控件的方法來私自運行系統(tǒng)中的程序,從而達到破壞本地系統(tǒng)的目的。為了保證系統(tǒng)安全,我們應該阻止ActiveX控件私自運行程序。
解決方法:ActiveX控件是通過調(diào)用Windowsscriptinghost組件的方式運行程序的,所以我們可以先刪除“system32”目錄下的wshom.ocx文件,這樣ActiveX控件就不能調(diào)用Windowsscriptinghost了。然后,在注冊表中找到“HKEY_LOCAL_MACHINESOFTWAREClassesCLSID{F935DC22-1CF0-11D0-ADB9-00C04FD58A0B}”,將該項刪除。通過以上操作,ActiveX控件就再也無法私自調(diào)用腳本程序了。
安全隱患:Windows2000的頁面交換文件也和上文提到的DR.WATSON程序一樣經(jīng)常成為黑客攻擊的對象,因為頁面文件有可能泄露一些原本在內(nèi)存中后來卻轉到硬盤中的信息。畢竟黑客不太容易查看內(nèi)存中的信息,而硬盤中的信息則極易被獲取。
解決方法:找到“HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSessionManagerMemoryManagement”,將其下的ClearPageFileAtShutdown項目的值設置為1(圖2)。
這樣,每當重新啟動后,系統(tǒng)都會將頁面文件刪除,從而有效防止信息外泄。
安全隱患:使用Windows系統(tǒng)沖浪時,常會遇到密碼信息被系統(tǒng)自動記錄的情況,以后重新訪問時系統(tǒng)會自動填寫密碼。這樣很容易造成自己的隱私信息外泄。
解決方法:在“HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionpolicies”分支中找到network子項(如果沒有可自行添加),在該子項下建立一個新的雙字節(jié)值,名稱為disablepasswordcaching,并將該值設置為1。重新啟動計算機后,操作系統(tǒng)就不會自作聰明地記錄密碼了。
安全隱患:現(xiàn)在的病毒很聰明,不像以前只會通過注冊表的RUN值或MSCONFIG中的項目進行加載。一些高級病毒會通過系統(tǒng)服務進行加載。那么,我們能不能使病毒或木馬沒有啟動服務的相應權限呢?
解決方法:運行“regedt32”指令啟用帶權限分配功能的注冊表編輯器。在注冊表中找到“HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices”分支,接著點擊菜單欄中的“安全→權限”,在彈出的Services權限設置窗口中單擊“添加”按鈕,將Everyone賬號導入進來,然后選中“Everyone”賬號,將該賬號的“讀取”權限設置為“允許”,將它的“完全控制”權限取消(圖3)?,F(xiàn)在任何木馬或病毒都無法自行啟動系統(tǒng)服務了。當然,該方法只對沒有獲得管理員權限的病毒和木馬有效。
安全隱患:很多病毒都是通過注冊表中的RUN值進行加載而實現(xiàn)隨操作系統(tǒng)的啟動而啟動的,我們可以按照“禁止病毒啟動服務”中介紹的方法將病毒和木馬對該鍵值的修改權限去掉。
解決方法:運行“regedt32”指令啟動注冊表編輯器。找到注冊表中的“HKEY_CURRENT_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRUN”分支,將Everyone對該分支的“讀取”權限設置為“允許”,取消對“完全控制”權限的選擇。這樣病毒和木馬就無法通過該鍵值啟動自身了。
病毒和木馬是不斷“發(fā)展”的,我們也要不斷學習新的防護知識,才能抵御病毒和木馬的入侵。與其在感染病毒或木馬后再進行查殺,不如提前做好防御工作,修筑好牢固的城墻進行抵御。養(yǎng)成良好的安全上網(wǎng)習慣,盡量不接觸那些不安全的站點和下載不安全的軟件、視頻等,開機運行360和殺毒軟件,備份一份安全的注冊表文件,勤打補丁多學習,“防患于未然”才是我們應該追求的。
PS:本文在書寫過程中引用了網(wǎng)絡上的一些內(nèi)容,在此,對那些默默奉獻出自己知識的無名朋友們表示感謝!
相關文章
圖解google adsense設置用西聯(lián)快匯的全過程
圖解google adsense設置用西聯(lián)快匯的全過程...2007-09-09實測各瀏覽器cookie的name個數(shù)及最大容量限制
各瀏覽器的cookie每一個name=value的value值大概在4k;所以4k并不是一個域名下所有的cookie共享的,而是一個name的大小,下面是具體的測試代碼,感興趣的朋友可以參考下哈2013-07-07真正解決win2003的“由于下列錯誤,Parallel port driver 服務啟動失敗的解決方法”
真正解決win2003的“由于下列錯誤,Parallel port driver 服務啟動失敗的解決方法”...2007-07-07