1.概述
Windows XP注冊表實際上是一個龐大的數據庫,這個數據庫記錄了機器軟硬件環境的各種信息,對操作系統及應用程序的正常運行至關重要。具體來講,此數據庫包含了Windows系統和應用程序的初始化信息、應用程序和文檔文件的關聯、硬件設備的說明、狀態和屬性等數據,操作系統和應用程序會對此數據庫進行頻繁存取,以保存和獲取必要的數據。
注冊表中的不少數據可直接通過操作系統及應用軟件提供的界面來變更。筆者認為對注冊表數據直接修改的意義主要有二:一是快捷,可以繞過不少復雜的操作;二是可以對操作系統、應用軟件不提供修改途徑的數據進行變更,以實現特殊目的。這裡要說明的是,由於Windows XP是嚴格的多用戶操作系統,在進行注冊表操作時,應以管理組(Administrators)成員身份進入。
在Windows 9X中,注冊表的數據文件存放在系統盤的Windows目錄下(user.dat和system.dat)。而在Windows XP中,絕大部分數據文件存放在“%SystemRoot%\system32\config”文件夾下(“%SystemRoot%”是文件夾system32所在位置,如“c:\Windows”)。該目錄裡面包含了5個沒有擴展名的文件,即當前注冊表文件:
DEFAULT(默認注冊表文件,位於注冊表的HKEY_USERS項分支下)
SAM(安全賬戶管理器注冊表文件,位於注冊表的HKEY_LOCAL_MacHINE\SAM項分支下)
SECURITY(安全注冊表文件,位於注冊表的HKEY_LOCAL_MacHINE\SECURITY項分支下)
SOFTWARE(應用軟件注冊表文件,位於注冊表的HKEY_LOCAL_MacHINE\SOFTWARE項分支下)
SYSTEM(系統注冊表文件,位於注冊表的HKEY_LOCAL_MacHINE\SYSTEM項分支下)
Windows XP會將系統初裝後的注冊表文件備份到“%SystemRoot%\Repair”目錄下,以便系統出現故障時能用此備份文件修復(具體使用方法請參見後文)。
2.Windows XP注冊表編輯器
Windows提供一個編輯注冊表文件的編輯器,單擊“開始”→“運行”,輸入“regedit”回車後即可進入。注冊表編輯器的界面類似於資源管理器,其中涉及到一些名詞術語,以下介紹我們將統一采用Windows XP中文版幫助文件中的命名。
編輯
器左欄是樹形目錄結構,共有5個根目錄,稱為子樹,各子樹以字符串“HKEY_”為前綴(分別為HKEY_CLASSES_ROOT,HKEY_LOCAL_MacHINE,HKEY_USERS,HKEY_CURRENT_USER,HKEY_CURRENT_CONFIG);子樹下依次為項、子項和活動子項,活動子項對應右欄中的值項,值項包括3部分:名稱、數據類型、值。
在Windows XP注冊表編輯器中可直接修改、添加和刪除項、子項與值項,並且可利用查找命令快速查找各子項和值項:
(1)設置權限:在多用戶情況下,可設置注冊表的某個分支不能被指定用戶訪問,方法是選擇要處理的項,並選擇菜單“編輯”→“權限”,然後在對話框中設置相應權限。但這裡要注意,設置訪問權限意味著該用戶其進入系統後運行的任何程序均不能訪問此注冊表項,不熟悉的用戶請慎用此功能。
(2)查找:選擇菜單“編輯”→“查找”(或按“Ctrl+F”),在彈出的“查找”窗口中“√”選要查找目標的類型,並輸入待查找內容,單擊“查找下一個”按鈕,等待片刻便能看到結果,之後按“F3”鍵可查找下一個相同目標。
(3)收藏:有些注冊表項經常需要修改,這時可將此項添加到“收藏夾”中。選擇注冊表項,單擊“收藏”→“添加收藏夾”,輸入名稱並確定後該注冊表項便添加到了“收藏”列表中,以後訪問時可直接從“收藏夾”點選進入。查找和收藏是注冊表編輯器的重要功能,應多加以利用。
(4)添加子項或值項:在左窗格中選擇要在其下添加新項的注冊表項,然後在右窗格中單擊鼠標右鍵,選擇“新
建”→“項”或值項數據類型。
(5)更改值項:右鍵單擊要更改的值項,選擇“修改”,然後輸入新數據並“確定”即可。實際上,如要刪除、重命名子項、值項,只須選擇相應對象,單擊右鍵,進行相應操作即可。
(6)注冊表項的“導出”和“導入”:建議在修改注冊表時,如果沒有把握,請將修改項先導出以備修改錯誤時再導入恢復。選擇要導出的注冊表項,單擊“文件”→“導出”,“保存類型”一般選擇“*.reg”,輸入文件名後單擊“保存”即可。要導入已備份的注冊表項只須單擊“文件”→“導入”,並選擇准備導入的文件,若是上一步導出時存為.reg文件,導入時直接雙擊此文件即可完成任務。
3.備份注冊表
為了在注冊表損壞後能及時修復,有必要對其進行備份。用Windows XP自帶的備份工具就可完成此工作:單擊“開始”→“所有程序”→“附件”→“系統工具”→“備份”,取消向導模式調出“備份工具”對話框,點選“備份”標簽,再“√”選其中的“System State(系統狀態)”項,點選左下角的“浏覽”可選擇存儲備份文件的位置。最後點擊“開始備份”,系統便開始備份文件了。需要注意的是這樣的備份是連帶系統文件一同備份,雖然耗時多,但非常安全(後面會講到),且操作簡便。如果你僅對注冊表信息備份,那麼將上文中提到的5個注冊表數據文件備份即可。
探索Windows XP注冊表
Windows XP注冊表中除前面提到的5大子樹,其實還有一個隱藏的性能子樹HKEY_PERFOR MANCE_DATA,包含了Windows XP一些性能工具和性能數據之間的信息;但在注冊表編輯器中無法看到此子樹內容,只能通過編程方式訪問,因此本文就不作介紹了。
在Windows XP注冊表中,HKEY_CURRENT_CONFIG子樹的信息較少,也不是很有用,這裡予以跳過。HKEY_CLASSES_ROOT下的信息和HKEY_LOCAL_MACHINE\SOFTWARE\Classes下的信息相同,只要一處更改,另一處便自動更改。HKEY_USERS子樹很有用,特別是.DEFAULT項,保存的是默認用戶的軟件設置,如果要限制新建立用戶的軟件設置,則可在此修改;當前用戶由於已被創建,修改此子樹對其已無效,而應當通過HKEY_CURRENT_USER來達到修改目的。這樣我們關注的注冊表內容其實就集中在HKEY_LOCAL_MacHINE、HKEY_CURRENT_USER兩大子樹下,後面將對這兩大子樹進行深入探索,所舉之例都是與大家關系密切的,其本身的意義固然不小,但我們更希望大家細細分析這些實例,並得出規律性的結論,以達到舉一反三的效果。
1.HKEY_LOCAL_MacHINE子樹詳解
該子樹主要存儲Windows XP的系統信息,常用到SOFTWARE和SYSTEM兩個子項。
(1)HKEY_LOCAL_MacHINE\SOFTWARE
該項下的數據存儲了應用和系統軟件的有關信息,只要涉及到具體軟件方面的修改都應進入此注冊表項。
①HKEY_LOCAL_MacHINE\SOFTWARE\Classes
該項存儲了不同文件類型的打開程序及已注冊程序的相關信息。關於文件用什麼軟件打開、播放等修改操作都應進入此項。
實例:更改AVI文件的默認打開程序
首先來分析一下AVI文件打開程序的存儲位置。在注冊表編輯器中(以下除非特別說明,都是在注冊表編輯器中)展開上述Classes項下的.avi,發現左窗格中“默認”值項的數據是“AVIFile”,於是找到同一Classes項下的AVIFile,展開其下的shell\open\command,發現其默認值指向Windows Media Player),即AVI文件用WMP默認播放。因此修改其默認打開程序有兩種方法:一種是把上述command項下的默認值改為指定程序,如筆者硬盤上的“D:\Winamp2經典\Winamp.exe”,但上述方法的結果之一是AVI文件的顯示圖標仍然是原來的Media Player樣式;也可修改上述.avi項中的默認值,使其指向Winamp2的注冊位置,於是仍在上述Classes項下尋找,果然發現有Winamp.File子項,因此將.avi項中的默認值改為“Winamp.File”,果然一擊奏效,圖標也隨著改變了。如果你發現這兩個修改方法均對打開程序不起作用,沒關系,這是因為HKEY_CURRENT_USER中對AVI擴展名信息進行了覆蓋,看到後面的內容你就明白了。
鞏固:要禁止CD光盤自動運行,只需展開上述Classes項下的AudioCD\shell子項,在右邊窗格中將“默認”值項設為空“ ”(即輸入空格)。
②HKEY_LOCAL_MacHINE\SOFTWARE\Classes\CLSID
該子項存儲有關類ID(CLaSs ID)分配的信息,Windows XP中幾乎所有支持OLE的應用程序都有一個合法的類ID。這個子項對於程序員的意義很大,對於普通用戶,則可用來修改特定圖標的提示信息。這個子項比較常用,建議大家收藏,以方便使用。
實例:修改“回收站”的提示信息
上面所說的特定圖標包括HKEY_CURRENT_USER\Software\ Microsoft\Windows\CurrentVersion\Explorer\CLSID下的5個圖標,分別代表網上鄰居、我的電腦、我的文檔、回收站和IE浏覽器。由圖可知“回收站”的CLSID值為{645FF040-5081-101B-9F08-00AA002F954E},在HKEY_LOCAL_MacHINE\SOFTWARE\Classes\CLSID子項下查找此字串,找到後將右邊窗格中修改字符串InfoTip的值為你想要的提示信息,如“電子垃圾輪回之所”。在這裡也有DefaultIcon(默認圖標)子項,但因HKEY_CURRENT_USER對此也進行了覆蓋(其實就是上面提到HKEY_CURRENT_USER\…\下的CLSID子項),所以改過後並沒有任何作用。
鞏固:修改控制面板中“任務欄和‘開始’菜單”的默認圖標,查找CLSID下的{0DF44EAA-FF21-4412-828E-260A8728E7F1}
-