windowXP登錄檔學習

zhengnx發表於2010-04-19

regedit

HKEY_CLASSES_ROOT

是基層類別鍵,用於定義系統中所有已經註冊的副檔名,檔案型別,檔案圖示等HKEY_CURRENT_USER

用於定義當前使用者的所有許可權HKEY_LOCAL_MACHINE

用於定義相對網路環境而言的本地計算機軟硬體的全部資訊HKEY_USERS

用於定義所用的使用者資訊,其中部分分支將對映到HKEY-CUQQENT-USER關鍵字中,大部分設定都可以透過控制皮膚來修改
HKEY_CURRENT_CONFIG

用於定義計算機的當前配置情況,實際上就是指向HKEY_LOCAL_MASHINEConfig結構中的某個分支的指標

-----------------

HKEY_CLASSES_ROOT中全面設定檔案關聯

HKEY_CLASSES_ROOT中全面設定檔案關聯

HKEY_CLASSES_ROOT是登錄檔中的一項RootKey。

其記錄了多種類的資訊。這裡我們只說說基本的檔案關聯類。

展開該根項,應該看到很多很多子項。

最前面通常是*,這個子項比較關鍵。他代表所有的檔案型別。
其後是一些類似於“.asf”,“.txt”這些專案代表了該副檔名對應的檔案資訊。
預設鍵值記錄該副檔名檔案屬於哪一個類的檔案型別。
比如.log和.txt都是屬於txtfile類的檔案型別。
修改HKEY_CLASSES_ROOTtxtfile下的東西就可以同時修改.log檔案和.txt檔案的相關引數。
展開後得到的子項中比較比較常見的有:
OpenWithList 這個目前還不是特別清楚,貌似是開啟程式的列表。但是似乎不怎麼管用。
Shell 這個就是開啟該檔案型別的操作
ShellEx 這個是開啟該檔案型別的外殼操作擴充套件
我們能改變的基本上只有Shell子項。
ShellEx子項因為是用ClassID來表示的,他們是安裝某些特定的程式後註冊的,因此,很難增加或修改。但是可以比
較容易地刪除。

比如,我們知道avi檔案在資源管理器裡是可以進行預覽的,但是當我們進入一個包含較多AVI檔案的資料夾,速度會
變得比較慢。
流行的解決方法是Regsvr32 / u 掉某個DLL。(記不清楚了)
我們用ShellEx來解決。
展開:
HKEY_CLASSES_ROOT.aviShellEx{BB2E617C-0920-11d1-9A0B-00C04FC2D6C1}
把預設鍵由:
{c5a40261-cd64-4ccf-84cb-c394da41d590}
改為:
!{c5a40261-cd64-4ccf-84cb-c394da41d590}
即在前面加一個感嘆號(別的符號也可以)。當我們需要的時候,刪掉這個感嘆號就可以了。

其他的操作可以近似地模仿。對於ShellEx內有比較多的ClassID的時候,可以一個一個地嘗試。
(對於一些系統檔案的關聯,還需要在HKEY_CLASSES_ROOTSystemFileAssociations下刪除一次)
(比如感嘆號掉:HKEY_CLASSES_ROOTSystemFileAssociations.avishellexPropertyHandler可以去掉滑鼠懸停的

提示和屬性頁面的摘要內容)

下面我們以Bat批處理檔案為例說一說Shell操作的修改。
展開HKEY_CLASSES_ROOT.bat
看到預設的鍵值是Batfile,說明.bat副檔名檔案屬於batfile類的檔案型別
於是,我們展開HKEY_CLASSES_ROOTbatfile
看到預設鍵值,是個中文的,放心的修改。這個就是檔案型別的說明。
比如修改成:“MS-DOS批處理檔案”
在這個位置其他的可選鍵有:
NoOpen 字串 表示沒有預設操作時顯示警告框。可以參看HKEY_CLASSES_ROOTocxfileNoOpen
InfoTip 字串 表示滑鼠懸停的有關該檔案的資訊提示。
TileInfo 字串 表示平鋪檢視下圖示旁邊的資訊提示。
(比如我把它改為prop:Size;Create 則會顯示Bat檔案的大小和建立時間)

以下是子項:
DefaultIcon 這個表示了該型別的檔案採用的預設圖示。
通常這個值是:%SystemRoot%System32shell32.dll,-153
他表示使用系統更目錄下System32shell32.dll的第153個圖示。
DLL檔案中可以以資源的方式包含若干圖示。大家可以自定義一個資料夾,選擇改變圖示,然後選定某個DLL,就

可以看到它包含的所有圖示了。(也可能一個都沒有)看到的編號在這裡從第一列開始向下,然後第二列。。。比如第

二列第二個編號就是5。
或者用一些工具,比如MicroAngelo,可以搜尋所有DLL和EXE等包含圖示資源的檔案。

Shell 這個子項是我們的關鍵
展開Shell可以看到幾個子項,每一個子項代表了一個Shell操作。
比如Open,代表開啟,Edit代表編輯
Shell下的預設鍵值可以設定雙擊該型別檔案執行的Shell操作。比如設定為Open。那麼雙擊Bat檔案就意味著執行

批處理。
然後我們展開其中一個子項。比如Open
預設鍵值是該操作的顯示名稱。我們改為:“執行批處理(&O)”
&O表示出現一個帶下劃線的O並設定為快捷鍵。
Open下含有一個叫Command的子項,其預設鍵值記錄執行的操作。對於Bat檔案來說。應該是:
"%1" %*
一些病毒木馬會修改這個地方。(類似的有EXE,COM檔案型別)大家就不要改了。
同樣的修改Edit子項為“編輯批處理(&E)”

這樣我們的Bat檔案型別就修改得差不多了。

相關應用舉例:
我想很多人都被隨身碟病毒所厭惡。剛開始很多人說用右鍵,選擇“開啟”就可以安全進入隨身碟。
其實是不正確的,一些隨身碟病毒可以在Autorun.inf中寫入資訊,去掉Open外殼操作,而替換成自己的Open操作。
因此,我們展開:
HKEY_CLASSES_ROOTFoldershellopen
把預設鍵值修改成:開啟資料夾(&O)
這樣,當我們在資料夾和驅動器上點選右鍵的時候,如果看到的是“開啟”操作,那麼就是有問題的。
如果看到的是“開啟資料夾”操作,則可以放心地點選。因為不會有病毒那麼笨,修改這麼特殊的外殼操作名字



很多朋友都希望能夠在資料夾圖示上右鍵,選擇從MS-DOS進入。
有很多最佳化軟體提供這個功能,但是名字通常都是叫“DOS 在這裡”,名字很不好。
我們可以DIY一個。展開:
HKEY_CLASSES_ROOTDirectoryshell
新建MSDOS子項,輸入預設鍵值為:“用命令列開啟(&L)”
然後在MSDOS下新建Command子項,輸入預設鍵值為:“cmd.exe /k "cd %L"”

類似的我們可以DIY一個DLL檔案的註冊和解除安裝外殼操作。
留給大家自己解決~~~
[@more@]

HKEY_CLASSES_ROOT

  HKEY_CLASSES_ROOT其實就是HKEY_LOCAL_MACHINESOFTWAREClasses,但是在HKEY_CLASSES_ROOT窗編輯相對來說顯得更容易和有條理。
  HKEY_CLASSES_ROOT包含了所有應用程式執行時必需的資訊:
  在檔案和應用程式之間所有的副檔名和關聯;
  所有的驅動程式名稱;
  類的ID數字(所要存取項的名字用數字來代替);
  DDE和OLE的資訊;
  用於應用程式和檔案的圖示;
  在登錄檔中HKEY_CLASSES_ROOT是系統中控制所有資料檔案的項。這個在Win95和Winnt中是相通的。HKEY_CLASSES_ROOT控制鍵包括了所有檔案擴充套件和所有和執行檔案相關的檔案。它同樣也決定了當一個檔案被雙擊時起反應的相關應用程式。
  HKEY_CLASSES_ROOT被用作程式設計師在安裝軟體時方便的傳送資訊,在Win95和Winnt中,HKEY_CLASSES_ROOT和HKEY_LOCAL_MACHINESoftwareClasses是相同的。程式設計師在執行他們的啟動程式時不需要擔憂實際的位置,相反的,他們只需要在HKEY_CLASSES_ROOT中加入資料就可以了。
  在Windows使用者圖形介面下,每件事----每個檔案,每個目錄,每個小程式,每個連線,每個驅動---都被看做一個物件;每個物件都有確定的屬性和它聯絡。HKCR包含著物件型別和它們屬性的列表。HKCR主要的功能被設定為:
  一個物件型別和一個副檔名關聯
  一個物件型別和一種圖示關聯
  一個物件型別和一個命令列動作的關聯
  定義物件型別相關選單選項和定義每一個物件型別屬性選項
  在Win95中,相關選單就是當你滑鼠右擊一個物件時所彈出的選單;屬性就是當你選擇屬性項後一個展開的對話方塊。用簡單術語來說就是在改變HKCR中的設定可以改變一個給定副檔名預設的關聯。改變一個檔案型別的預設圖示,和新增或者刪除給定物件型別的彈出選單內容(或者所有的物件型別)
  HKCR包括了三種基本型別的子鍵
  ??? 或者副檔名子鍵
  副檔名子鍵在彈出選單上連線副檔名到物件型別和相關操作,屬性項,和相關操作。
  object 型別子鍵
  物件型別子鍵定義了一個物件型別在它預設圖示的項,它的彈出選單和屬性項,它的相關操作和它的CLSID連線。
  CLSID 子鍵
  在Windows下每件事都被用一個數字取代它的名字來對待。就象人往往是用名字來處理事情一樣。CLSID是標識所有列出的圖示,應用程式,目錄,檔案型別等等物件的數字。是微軟為製造商分配的,每一個都必須是唯一的。製造商將CLSID放入安裝程式檔案這樣就可以在安裝時更新登錄檔。
  登錄檔是應用程式進行時它們需要關於做什麼的指示的資料庫。比如說,假定你有一個微軟Excel 7電子資料表的Word 7文件,當你在Word中雙擊這個電子資料表,應用程式選單就會變成Excel的選單而且電子資料表進入編輯狀態,就好像你在Excel中一樣。它是如何知道該做什麼呢?每個Excel 7建立的檔案都有Excel的CLSID連線。Word讀這個CLSID後,到登錄檔中尋找指示,依賴CLSID下的資料執行.DLL檔案或者應用程式。
  CLSID子鍵為物件型別提供了OLE和DDE資訊和圖示。相關選單,或者包含在它子鍵中的屬性項資訊。這個可能是多數讓人看到後覺得“恐怖”的鍵。每個CLSID數必須是唯一的,實際上,為了這個目的微軟已經出產了CLSID-產生程式--這個結果導致你往往得到32位16進位制的數字串,除非你是程式設計師,否則多數部分鍵看起來是很枯燥的。它們包括記憶體管理模式,客戶機/伺服器配置,和OLE處理的.dll連線。
  1)shell:Shell鍵有個一”action“子鍵,如同”open“一樣,這裡有一個command子鍵;command子鍵有一個預設句值,它包含了執行程式的命令列。將一個”open“子鍵放在一個物件型別的shell子鍵中會在這個物件型別的彈出選單上多出一個”open“選項,給這個open子鍵一個command(預設命令列"C:Windows Notepad.exe %1")子鍵會使得開啟這個物件型別時使用筆記本做為預設應用程式。其他操作選項包括View,Print,Copy,Virus,Scan等等。
  2)shellex:Shellex鍵有一個子鍵。它們包含的每一個子鍵指向一個為物件型別執行OLE和DDE功能的CLSID項(比如說快速檢視,一個選單處理子鍵下指向一個有句值的CLSID鍵列出了包含了檔案瀏覽功能的.dll檔案)
  3)shellnew:ShellNew包含了一個“command”句,它包含了一個開啟物件型別“新”檔案的命令列。
  4)DefaultIcon:DefaultIcon子鍵包含了一個“default”句,它包括了一個指向圖示的命令列(比如說,"C:Windows System shell32.dll,2" 2就是從0數的第三個圖示,記住,是在Shell32.dll中的)
  除了和它們副檔名關聯副檔名和檔案型別以外,它們在HKEY_CLASSES_ROOT還有很多項。所有它們的項也都適用於nt,如介面和應用程式的執行。通常你將編輯僅僅一小部分這樣的項。除了彈出選單提示以外,所有包含在這裡的項只會在安裝應用程式,在程式中設定調整或者創造關聯時被改變。
  沒有HKEY_CLASSES_ROOT你是不能啟動系統的;你手工編輯它真的是很困難。HKEY_CLASSES_ROOT是你需要註冊標一個很重要的原因:應用程式的控制和操作這個系統。看到它的尺寸和這個處理鍵的複雜程度,SYSTEM.INI 和 WIN.INI不再夠用也是不用驚奇的。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7868752/viewspace-1033013/,如需轉載,請註明出處,否則將追究法律責任。

相關文章