看完了這個你就可以用asp修改注冊表了! 大名鼎鼎的WSH聽說過嗎? 它就是Windows Script Host的縮寫形式,WSH是Windows平臺的腳本指令,它的功能十分強(qiáng)大,并且它還是利用語法結(jié)構(gòu)簡單、易學(xué)易用且功能強(qiáng)大的JScript和VBScript腳本語言,來實(shí)現(xiàn)其卓越的功能的,除了本文介紹的修改注冊表之外,它還可以訪問Excel文件,也能與網(wǎng)絡(luò)溝通,當(dāng)然它最大的優(yōu)勢莫過于它能與操作系統(tǒng)溝通,而修改注冊表只是它與操作系統(tǒng)溝通的冰山一角。正是它有如此諸多的優(yōu)點(diǎn)與實(shí)用性,正倍受很多Windows用戶的青睞,本文就為大家介紹一二,讓各位領(lǐng)略一下WSH的風(fēng)采。 用VBScript編寫的WSH程序文件的擴(kuò)展名為.vbs,該腳本程序在窗口界面是由wscript.exe文件解釋執(zhí)行的,在字符界面是由cscript.exe文件解釋執(zhí)行的,命令格式為:cscript filename.vbs 創(chuàng)建對象 用VBScript修改注冊表,必須先創(chuàng)建一個能于操作系統(tǒng)溝通的對象,再利用該對象的各種方法對注冊表進(jìn)行操作,創(chuàng)建這個對象的方法和格式如下: Dim OperationRegistry Set OperationRegistry=WScript.CreateObject("WScript.Shell") 上述這些代碼就創(chuàng)建了一個能與操作系統(tǒng)溝通的對象OperationRegistry 對象的方法 有了以上這個對象,并不等于就能馬上對注冊表進(jìn)行操作,我們還必須弄清該對象對注冊表進(jìn)行操作的幾種重要方法. 1.對注冊表的讀操作RegRead 2.對注冊表的寫操作RegWrite 3.對注冊表的刪操作RegDelete 補(bǔ)充一點(diǎn),WSH還有兩個通用的方法: WScript.Echo()用來顯示一串文本信息,相當(dāng)于VB中的MsgBox()。 Wscript.Quit()用來退出VBScript程序。 方法的參數(shù) 對于以上三種操作RegRead,RegWrite,RegDelete都需要帶參數(shù)進(jìn)行,并且這些操作的參數(shù)的個數(shù)和形式又不盡相同,下面我就把它們的一個共同且必不可少的參數(shù)講一下: 該參數(shù)可稱作是"路徑參數(shù)",它包括根鍵,主鍵路徑和鍵值,各部分表示的方法如下: 根鍵: 根鍵有兩種表示方法。 方法一:直接用它在注冊表中的字符串來表示,如: HKEY_CLASSES_ROOT,HKEY_CURRENT_USER等 方法二:用縮寫的四個字母來表示,前兩個為HK,后兩個即為根鍵單詞的首字母。如: 根鍵HKEY_CLASSES_ROOT表示為:HKCR, 根鍵HKEY_CURRENT_USER可表示為:HKCU等。 主鍵路徑: 主鍵路徑就是目標(biāo)鍵在注冊表中的主鍵位置,各個主鍵之間用"\"符分隔開。如:"Software\Microsoft\Windows\CurrentVersion\Policies\" 鍵值: 鍵值參數(shù)直接接在主鍵路徑之后。例如一個完整的路徑如下所示: "HKCR\Software\Microsoft\Windows\CurrentVersion\Policies\NoRun" 方法詳解 1、RegRead操作詳解 讀操作RegRead主要是用來讀取注冊表中主鍵的默認(rèn)值或鍵值的數(shù)據(jù),我們可以將讀得的數(shù)據(jù)送到相應(yīng)的變量中,再利用VB中的MsgBox()函數(shù)將該數(shù)據(jù)顯示出來,這就達(dá)到了讀取注冊表中數(shù)據(jù)的目的(也可以利用對象OperationRegistry的方法Popup()將讀取的數(shù)據(jù)送至屏幕), 例如: '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主鍵的默認(rèn)值,并將該數(shù)據(jù)送至變量Read_Data1 Read_Data2=OperationRegistry.RegRead("HKCR\.xxf\value") '讀取.xxf主鍵之下的value鍵值的數(shù)據(jù),并將該數(shù)據(jù)送至變量Read_Data2 MsgBox("Default="&Read_Data1&" value="&Read_Data2) '將讀取的數(shù)據(jù)顯示出來 2、RegWrite操作詳解 寫操作RegWrite主要是用來在注冊表中新建主鍵或鍵值,并要賦予給它們一個初始值,該操作同樣可以對注冊表中以存在的主鍵或鍵值進(jìn)行數(shù)據(jù)的修改,因此寫操作的參數(shù)結(jié)構(gòu)就比讀操作要復(fù)雜一些,它不僅要路徑參數(shù),還要一個初始值和類型參數(shù). 先來看初始值參數(shù),該參數(shù)對于寫操作來說是必不可少的,它可以為空(null)但卻不能省掉。在新建主鍵時,初始值參數(shù)就賦給了該主鍵的默認(rèn)值,在新建鍵值時,初始值參數(shù)就成了新建鍵值的初始數(shù)據(jù).而初始值的類型,則是由類型參數(shù)決定的.類型主要有以下三種: (1)REG_SZ:字符型.該類型為缺省類型 (2)REG_DWORD:雙字節(jié)型. (3)REG_BINARY:二進(jìn)制型. 以上三種類型第1種和第2種用得最多,第3種類型在某些場合可以用第2種加以替代,這三種類型的賦值方法如下: 對于REG_SZ型:直接用字符串賦予,如"text","string"等 對于REG_DWORD型和REG_BINARY型則有兩種賦值方式 i)直接用十進(jìn)制的數(shù)表示,如:0,1等. ii)用十六進(jìn)制的數(shù)表示,如: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,并置其默認(rèn)值為空 OperationRegistry.RegWrite "HKCR\.xxf\","xxffile" '在根鍵HKEY_CLASSES_ROOT之下新建主鍵.xxf,并置其默認(rèn)值為"xxffile" OperationRegistry.RegWrite "HKCR\.xxf\value1","string" '在主鍵.xxf之下新建一個字符串型鍵值value1,并置其初始值為"string" OperationRegistry.RegWrite "HKCR\.xxf\value2",1,"REG_DWORD" '在主鍵.xxf之下新建一個REG_DWORD型鍵值value2,并置其初始值為1 OperationRegistry.RegWrite "HKCR\.xxf\value3",0Xff,"REG_BINARY" '在主鍵.xxf之下新建一個二進(jìn)制型鍵值value3,并置其初始值為十六進(jìn)制的ff 3、RegDelete操作詳解 刪除操作RegDelete主要是用來刪除注冊表中已存在的主鍵或鍵值,該操作是一種極其危險(xiǎn)的操作,它能將主鍵或鍵值毫不留情的在注冊表中“砍掉”,無論該鍵值下面有多重要的數(shù)據(jù),它都能暢行無阻,因此在使用該操作時務(wù)必小心。 刪除操作的參數(shù)形式與讀操作的參數(shù)形式幾乎完全相同,只是有一點(diǎn)小小的區(qū)別,那就是刪除操作不需要將操作的返回值送給某一變量,例如: 'delete.vbs Dim OperationRegistry Set OperationRegistry=WScript.CreateObject("WScript.Shell") OperationRegistry.RegRead("HKCR\.xxf\value") '刪除.xxf主鍵之下的value鍵值 OperationRegistry.RegRead("HKCR\.xxf\") '刪除根鍵HKEY_CLASSES_ROOT之下的.xxf主鍵 強(qiáng)調(diào)一點(diǎn),不要更改注冊表中已存在的主鍵或鍵值,更不要將它們刪除,因?yàn)閷ψ员磉M(jìn)行了不當(dāng)?shù)膶懖僮骰騽h操作,情況嚴(yán)重的會導(dǎo)致系統(tǒng)崩潰!如果你真想這么做,那就請你作好注冊表的備份。 應(yīng)用實(shí)例 1、讀本機(jī)“計(jì)算機(jī)名” 'ReadComputerName.vbs Dim ReadComputerName Set ReadComputerName=WScript.CreateObject("WScript.Shell") Dim ComputerName,RegPath RegPath="HKLM\System\CurrentControlSet\Control\ComputerName\ComputerName\ComputerName" ComputerName=ReadComputerName.RegRead(RegPath) MsgBox("計(jì)算機(jī)名為"&ComputerName) 2、隱藏快捷方式圖標(biāo)上的小箭頭 'Hidden.vbs Dim HiddenArrowIcon Set HiddenArrowIcon=WScript.CreateObject("WScript.Shell") Dim RegPath1,RegPath2 RegPath1="HKCR\lnkfile\IsShortCut" RegPath2="HKCR\piffile\IsShortCut" HiddenArrowIcon.RegDelete(RegPath1) HiddenArrowIcon.RegDelete(RegPath2) 3、改造“開始”菜單 'ChangeStartMenu.vbs Dim ChangeStartMenu Set ChangeStartMenu=WScript.CreateObject("WScript.Shell") RegPath="HKCR\Software\Microsoft\Windows\CurrentVersion\Policies\" 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) '禁用“開始”菜單中的“運(yùn)行”功能 Call Change(StartMenu_Find) '禁用“開始”菜單中的“查找”功能 Call Change(StartMenu_Close) '禁用“開始”菜單中的“關(guān)閉系統(tǒng)”功能 4、向Windows中添加自啟動程序 該程序能在開機(jī)時自動運(yùn)行。 'AddAutoRunProgram.vbs '假設(shè)該程序在c:\myfile文件夾中,文件名為autorun.exe Dim AutoRunProgram Set AutoRunProgram=WScript.CreateObject("WScript.Shell") RegPath="HKLM\Software\Microsoft\Windows\CurrentVersion\Run\" Type_Name="REG_SZ" Key_Name="AutoRun" Key_Data="C:\Myfile\autorun.exe" '該自啟動程序的全路徑文件名 AutoRunProgram.Write RegPath&Key_Name,Key_Data,Type_Name '在啟動組中添加自啟動程序autorun.exe MsgBox("Success!")
|