看完了這個你就可以用asp修改註冊表了!
大名鼎鼎的WSH聽過嗎? 它就是Windows Script Host的縮寫形式,WSH是Windows平台的腳本指令,它的功能十分強大,而且它還是利用語法結構簡單、易學易用且功能強大的JScript和VBScript腳本語言,來實現其卓越的功能的,除了本文介紹的修改註冊表之外,它還可以訪問Excel文件,也能與網絡溝通,當然它最大的優勢莫過於它能與操作系統溝通,而修改註冊表只是它與操作系統溝通的冰山一角。正是它有這麼多的優點與實用性,正倍受許多Windows用戶的青睞,本文就為大家介紹一二,讓各位領略一下WSH的風采。
用VBScript編寫的WSH程式檔案的副檔名為.vbs,該腳本程式在視窗介面是由wscript.exe檔案解釋執行的,在字元介面是由cscript.exe檔案解釋執行的,命令格式為:cscript filename. vbs
建立物件用VBScript修改註冊表,必須先建立一個能於作業系統溝通的物件,再利用該物件的各種方法對登錄機碼進行操作,建立這個物件的方法和格式如下:
Dim OperationRegistry
Set OperationRegistry=WScript.CreateObject("WScript.Shell")
上述這些程式碼就創造了一個能與作業系統溝通的物件OperationRegistry
物件的方法有了以上這個物件,並不等於就能馬上對註冊表進行操作,我們還必須弄清該物件對註冊表進行操作的幾種重要方法.
1.對登錄機碼的讀取操作RegRead
2.對登錄的寫入操作RegWrite
3.對註冊表的刪操作RegDelete
補充一點,WSH還有兩個通用的方法:
WScript.Echo()用來顯示一串文字訊息,相當於VB中的MsgBox()。
Wscript.Quit()用來退出VBScript程式。
方法的參數對於以上三種操作RegRead,RegWrite,RegDelete都需要帶參數進行,並且這些操作的參數的個數和形式又不盡相同,下面我就把它們的一個共同且必不可少的參數講一下:
此參數可稱作是"路徑參數",它包括根鍵,主鍵路徑和鍵值,各部分錶示的方法如下:
根鍵:
根鍵有兩種表示方法。
方法一:直接用它在登錄中的字串來表示,如:
HKEY_CLASSES_ROOT,HKEY_CURRENT_USER等方法二:用縮寫的四個字母來表示,前兩個為HK,後兩個即為根鍵單字的首字母。如:
根鍵HKEY_CLASSES_ROOT表示為:HKCR, 根鍵HKEY_CURRENT_USER可表示為:HKCU等。
主鍵路徑:
主鍵路徑就是目標鍵在登錄中的主鍵位置,各個主鍵之間以""符分隔開。如:"SoftwareMicrosoftWindowsCurrentVersionPolicies"
鍵值:
鍵值參數直接接在主鍵路徑之後。例如一個完整的路徑如下所示:
"HKCRSoftwareMicrosoftWindowsCurrentVersionPoliciesNoRun"
方法詳解
1.RegRead操作詳解讀操作RegRead主要是用來讀取註冊表中主鍵的預設值或鍵值的資料,我們可以將讀得的資料送到對應的變數中,再利用VB中的MsgBox()函數將該資料顯示出來,這就達到了讀取註冊表中資料的目的(也可以利用物件OperationRegistry的方法Popup()將讀取的資料送到螢幕), 例如:
'read.vbs(將以下程式碼存為read.vbs檔)
Dim OperationRegistry
Set OperationRegistry=WScript.CreateObject("WScript.Shell")
Dim Read_Data1,Read_Data2
Read_Data1=OperationRegistry.RegRead("HKCR.xxf")
'讀取根鍵HKEY_CLASSES_ROOT之下的.xxf主鍵的預設值,並將該資料送至變數Read_Data1
Read_Data2=OperationRegistry.RegRead("HKCR.xxfvalue")
'讀取.xxf主鍵之下的value鍵值的資料,並將該資料送至變數Read_Data2
MsgBox("Default="&Read_Data1&" value="&Read_Data2)
'將讀取的資料顯示出來
2、RegWrite操作詳解寫操作RegWrite主要是用來在註冊表中新建主鍵或鍵值,並要賦予給它們一個初始值,該操作同樣可以對註冊表中以存在的主鍵或鍵值進行數據的修改,因此寫入操作的參數結構就比讀取操作要複雜一些,它不僅要路徑參數,還要一個初始值和類型參數.
先來看初始值參數,此參數對於寫入操作來說是必不可少的,它可以為空(null)但卻不能省掉。在新建主鍵時,初始值參數就賦給了該主鍵的預設值,在新建鍵值時,初始值參數就成了新建鍵值的初始資料.而初始值的型別,則是由型別參數決定的.型別主要有以下三種:
(1)REG_SZ:字元型.此類型為預設類型
(2)REG_DWORD:雙位元組型.
(3)REG_BINARY:二進位型.
以上三種第1種和第2種用得最多,第3種類型在某些場合可以用第2種加以替代,這三種類型的賦值方法如下:
對於REG_SZ型:直接用字串賦予,如"text","string"等對於REG_DWORD型和REG_BINARY型則有兩種賦值方式
i)直接以十進制的數表示,如:0,1等.
ii)用十六進制的數表示,如:0x12,0xff等. 看例:
'write.vbs
Dim OperationRegistry
Set OperationRegistry=WScript.CreateObject("WScript.Shell")
Default=OperationRegistry.RegRead("HKCR")
'取得一個空值(null)
OperationRegistry.RegWrite "HKCR.xxf",Default
'在根鍵HKEY_CLASSES_ROOT之下新建主鍵.xxf,並置其預設值為空
OperationRegistry.RegWrite "HKCR.xxf","xxffile"
'在根鍵HKEY_CLASSES_ROOT之下新建主鍵.xxf,並置其預設值為"xxffile"
OperationRegistry.RegWrite "HKCR.xxfvalue1","string"
'在主鍵.xxf之下新建一個字串型鍵值value1,並置其初始值為"string"
OperationRegistry.RegWrite "HKCR.xxfvalue2",1,"REG_DWORD"
'在主鍵.xxf之下新建一個REG_DWORD型鍵值value2,並置其初始值為1
OperationRegistry.RegWrite "HKCR.xxfvalue3",0Xff,"REG_BINARY"
'在主鍵.xxf之下新建一個二進位型鍵值value3,並置其初始值為十六進位的ff
3.RegDelete操作詳解刪除操作RegDelete主要是用來刪除註冊表中已存在的主鍵或鍵值,該操作是一種極其危險的操作,它能將主鍵或鍵值毫不留情的在註冊表中“砍掉”,無論該鍵值下面有多重要的數據,它都能暢行無阻,因此在使用該操作時務必小心。
刪除操作的參數形式與讀取操作的參數形式幾乎完全相同,只是有一點小小的區別,那就是刪除操作不需要將操作的返回值送給某一變量,例如:
'delete.vbs
Dim OperationRegistry
Set OperationRegistry=WScript.CreateObject("WScript.Shell")
OperationRegistry.RegRead("HKCR.xxfvalue")
'刪除.xxf主鍵之下的value鍵值
OperationRegistry.RegRead("HKCR.xxf")
'刪除根鍵HKEY_CLASSES_ROOT之下的.xxf主鍵強調一點,不要更改註冊表中已存在的主鍵或鍵值,更不要將它們刪除,因為對註冊表進行了不當的寫操作或刪操作,情況嚴重的會導致系統崩潰!如果你真想這麼做,那就請你作好註冊表的備份。
應用實例
1、讀本機“計算機名稱”
'ReadComputerName.vbs
Dim ReadComputerName
Set ReadComputerName=WScript.CreateObject("WScript.Shell")
Dim ComputerName,RegPath
RegPath="HKLMSystemCurrentControlSetControlComputerNameComputerNameComputerName"
ComputerName=ReadComputerName.RegRead(RegPath)
MsgBox("電腦名稱為"&ComputerName)
2.隱藏快捷方式圖示上的小箭頭
'Hidden.vbs
Dim HiddenArrowIcon
Set HiddenArrowIcon=WScript.CreateObject("WScript.Shell")
Dim RegPath1,RegPath2
RegPath1="HKCRlnkfileIsShortCut"
RegPath2="HKCRpiffileIsShortCut"
HiddenArrowIcon.RegDelete(RegPath1)
HiddenArrowIcon.RegDelete(RegPath2)
3.改造「開始」選單
'ChangeStartMenu.vbs
Dim ChangeStartMenu
Set ChangeStartMenu=WScript.CreateObject("WScript.Shell")
RegPath="HKCRSoftwareMicrosoftWindowsCurrentVersionPolicies"
Type_Name="REG_DWORD"
Key_Data=1
StartMenu_Run="NoRun"
StartMenu_Find="NoFind"
StartMenu_Close="NoClose"
Sub Change(Argument)
ChangeStartMenu.RegWrite RegPath&Argument,Key_Data,Type_Name
MsgBox("Success!")
End Sub
Call Change(StartMenu_Run) '停用「開始」功能表中的「執行」功能
Call Change(StartMenu_Find) '停用「開始」功能表中的「尋找」功能
Call Change(StartMenu_Close) '停用「開始」功能表中的「關閉系統」功能
4、向Windows新增自啟動程式該程式能在開機時自動運作。
'AddAutoRunProgram.vbs
'假設程式在c:myfile資料夾中,檔案名稱為autorun.exe
Dim AutoRunProgram
Set AutoRunProgram=WScript.CreateObject("WScript.Shell")
RegPath="HKLMSoftwareMicrosoftWindowsCurrentVersionRun"
Type_Name="REG_SZ"
Key_Name="AutoRun"
Key_Data="C:Myfileautorun.exe"
'該自啟動程式的全路徑檔名
AutoRunProgram.Write RegPath&Key_Name,Key_Data,Type_Name
'在啟動群組中新增自啟動程式autorun.exe
MsgBox("Success!")