Vbscript寫注冊(cè)表的方法
分類:程序
早些年用過(guò)DOS系統(tǒng)的用戶都知道,MS-DOS操作系統(tǒng)允許普通用戶編寫批處理文件來(lái)實(shí)現(xiàn)簡(jiǎn)單的編程。它有效地簡(jiǎn)化了我們的工作,帶給我們?cè)S多方便。當(dāng)時(shí)甚至出現(xiàn)了一些專門編寫批處理文件的程序員呢。
事實(shí)上,操作系統(tǒng)除了提供易于操作的使用界面外,還應(yīng)當(dāng)有一套內(nèi)建的Script(腳本)語(yǔ)言才算完整。從某種角度來(lái)說(shuō),批處理文件可以說(shuō)就是MS-DOS下的腳本語(yǔ)言。到了Windows時(shí)代,雖然Windows系統(tǒng)仍然保留了批處理,但是批處理在Windows中就顯得功能過(guò)于簡(jiǎn)單,無(wú)法滿足用戶的需要了——比如修改注冊(cè)表,批處理能做得到嗎?事實(shí)上, Windows 98之后的Windows系統(tǒng),除了保留原來(lái)的批處理系統(tǒng)之外,開(kāi)始加入了對(duì)腳本語(yǔ)言的支持,這就是“Windows Scripting Host”,中文譯名為“Windows 腳本宿主”,簡(jiǎn)稱WSH。
WSH本身并不是腳本語(yǔ)言,它是腳本語(yǔ)言的運(yùn)行環(huán)境,WSH支持的腳本語(yǔ)言有JScript(微軟版的JavaScript,與真正JavaScript不太一樣)和VBScript——這個(gè)東東大家一定很熟悉啦,網(wǎng)頁(yè)上常用。
WSH的腳本引擎(Scripting Engine)有兩種方式,一種是Command方式的CScript.exe,另一種是Windows方式的WScript.exe。我們編寫的腳本程序(擴(kuò)展名為“.js”和“.vbs”的純文本文件)必須通過(guò)這兩者之一來(lái)加載運(yùn)行。
雖然WSH支持JScript和VBScript語(yǔ)言,但仍然要配合WSH本身所提供的一些對(duì)象,以及對(duì)象的屬性(Properties)和方法(Method)才能夠發(fā)揮最大的效用。關(guān)于JScript和VBScript的程序設(shè)計(jì)我們這里就不多說(shuō)了。我們現(xiàn)在還是把注意力放在WSH的對(duì)象上面。事實(shí)上,本文涉及的注冊(cè)表編程就幾乎不需要關(guān)于VBScript的任何知識(shí),我們只需簡(jiǎn)單地套用現(xiàn)成的語(yǔ)句就可以了。
WSH中的對(duì)象主要有:WScirpt、WshArguments、WshShell、 WshUrlShortcut、WshNetwork、 WshSpecialFolders、WshCollection、 WshEnvironment、WshShort等。
每一個(gè)對(duì)象又都有各自的屬性和方法。在這里我們僅就訪問(wèn)注冊(cè)表所涉及的有關(guān)對(duì)象的方法和屬性略做介紹。
首先是WshShell對(duì)象。該對(duì)象可用來(lái)設(shè)置系統(tǒng)環(huán)境變量以及修改注冊(cè)表的數(shù)據(jù)。要修改注冊(cè)表的數(shù)據(jù),需要使用WshShell對(duì)象的三種方法: RegDelete(刪除注冊(cè)表數(shù)據(jù))、RegWrite(寫入或新建注冊(cè)表數(shù)據(jù))和 RegRead(讀取注冊(cè)表數(shù)據(jù))。
通常我們只需要用到前兩種方法,它們具體的使用方法如下:
一、RegWrite(寫入或新建注冊(cè)表數(shù)據(jù))
* 新建子主鍵
語(yǔ)法為:WshShell.RegWrite "子主鍵名"
例如,我們想新建一個(gè)子主鍵“HKEY_CURRENT_USERMyReg”,可使用如下的語(yǔ)句:
WshShell.RegWrite "HKCUMyReg"
說(shuō)明:子主鍵名必須以反斜線 () 結(jié)束,若不小心忘記輸入了這個(gè)(),則該方法返回的是鍵值,即表示你是想在 HKEY_CURRENT_USER下建立了一個(gè)名叫MyReg的鍵值了。這一點(diǎn)一定要十分注意!
注意引號(hào)里子主鍵的開(kāi)頭必須是下列根鍵名之一:
HKEY_CURRENT_USER(可簡(jiǎn)寫為HKCU)、HKEY_LOCAL_MACHINE (HKLM)、HKEY_CLASSES_ROOT(HKCR)、 HKEY_USERS和HKEY_CURRENT_CONFIG
* 在子主鍵下建立新的鍵值(或改寫已有的鍵值的數(shù)據(jù))
語(yǔ)法為:WshShell.RegWrite "子主鍵名鍵值名","鍵值的數(shù)據(jù)","鍵值的類型"
例如我們想在子主鍵“HKEY_CURRENT_USERMyReg” 下新建一個(gè)字符串鍵值KeyValue,設(shè)置鍵值的數(shù)據(jù)為“str”,可使用如下的語(yǔ)句:
WshShell.RegWrite "HKCUMyRegKeyValue", "str"
?。ㄗ?鍵值為字符串值,可省去"鍵值類型"的聲明)
若所建的為二進(jìn)制值或DWORD值,數(shù)據(jù)為“1”,則還必須聲明鍵值的類型,如下:
WshShell.RegWrite "HKCUMyRegKeyValue",1,"REG_BINARY"
WshShell.RegWrite "HKCUMyRegKeyValue",1,"REG_DWORD"
注意二進(jìn)制值和DWORD值的數(shù)據(jù)不能加引號(hào),而字符串值的數(shù)據(jù)則必須加引號(hào)。
二、RegDelete(刪除注冊(cè)表數(shù)據(jù))
* 刪除一個(gè)子主鍵
語(yǔ)法為:WshShell.RegDelete "子主鍵名"
例如,我們想刪除子主鍵“HKEY_CURRENT_USERMyReg”,可使用如下的語(yǔ)句:
WshShell.RegDelete "HKCUMyReg"
* 刪除子主鍵的某個(gè)鍵值
語(yǔ)法為:WshShell.RegDelete "子主鍵名鍵值名"
例如,我們想刪除子主鍵“HKEY_CURRENT_USERMyReg” 的鍵值KeyValue,可使用如下的語(yǔ)句:
WshShell.RegDelete "HKCUMyRegKeyValue"
類似于RegWrite,有一個(gè)“”號(hào)表示的是刪除子主鍵,沒(méi)有“”則表示要?jiǎng)h除的是子主鍵下的鍵值。
除了WshShell對(duì)象外,我們還必須了解一下WScirpt 對(duì)象。WScirpt對(duì)象即代表Scripting Engine,只要啟動(dòng)Engine就會(huì)自動(dòng)產(chǎn)生此對(duì)象。WScript對(duì)象提供了創(chuàng)建和讀取對(duì)象的方法。要使用WSH的其他對(duì)象(例如WshShell對(duì)象),就必須先用WScript對(duì)象的有關(guān)方法(CreateObject、GetObject)來(lái)創(chuàng)建和讀取。
創(chuàng)建對(duì)象的語(yǔ)法如下:
WScript.CreateObject(strProgID)
其中strProgID就是我們所要?jiǎng)?chuàng)建的對(duì)象的標(biāo)識(shí)名。
例如:我們要使用WshShell對(duì)象及其屬性和方法,首先就要用WScript對(duì)象的方法CreateObject來(lái)創(chuàng)建一個(gè)WshShell對(duì)象,語(yǔ)句如下:
Set WSHShell = WScript.CreateObject("WScript.Shell")
舉一個(gè)例子吧。大家都知道,如果你使用了“開(kāi)始”菜單中的“運(yùn)行”,Windows將在列表框里記錄下你“作案” 的痕跡。其實(shí)這些數(shù)據(jù)是記錄在注冊(cè)表中HKEY_CURRENT_USERSoftwareMicrosoftWindows
CurrentVersionExplorerRunMRU子鍵下,我們只要把這個(gè)子鍵刪除,然后再重新建立,不就可以了嗎?
現(xiàn)在我們可以來(lái)編寫一個(gè)腳本了。以VBS為例,我們可以用記事本新建一個(gè)文件,然后輸入(其中“//”后的文字為注釋,不必輸入):
//定義對(duì)象,要編輯注冊(cè)表,我們需要使用WSHShell對(duì)象及其方法
Dim WSHShell
//對(duì)象的方法CreateObject來(lái)創(chuàng)建WSHShell對(duì)象
Set WSHShell = WScript.CreateObject("WScript.Shell")
//然后我們使用WSHShell對(duì)象的方法RegDelete來(lái)刪除 HKEY_CURRENT_USERSoftwareMicrosoft
WindowsCurrentVersionExplorerRunMRU子鍵
WSHShell.RegDelete "HKCUSoftwareMicrosoft
WindowsCurrentVersionExplorerRunMRU"
//最后我們恢復(fù)該主鍵,并在該主鍵下恢復(fù)字符串值“MRUList”,設(shè)置其數(shù)據(jù)為空串
WSHShell.RegWrite "HKCUSoftwareMicrosoft
WindowsCurrentVersionExplorerRunMRUMRUList",""
程序到此結(jié)束,我們把文件另存為CleanMRU.vbs就可以了?,F(xiàn)在我們就可以使用Scripting Engine來(lái)執(zhí)行這個(gè)程序了。假設(shè)我們剛才把這個(gè)文件保存在D:TEMP里,我們就可以使用“開(kāi)始”菜單的“運(yùn)行”——Wcript.exe D:TEMPCleanMRU.vbs。重新啟動(dòng),怎么樣?“運(yùn)行”里已經(jīng)是空空如也了吧!
如果我們這樣費(fèi)盡心思地編了程序,最后還是得靠手工來(lái)運(yùn)行,那還不如每次直接用注冊(cè)表編輯器來(lái)操作呢!其實(shí)我們完全可以讓它在每次開(kāi)機(jī)時(shí)自動(dòng)加載。這么一說(shuō),大家肯定都知道了——我們可以使用注冊(cè)表編輯器,在“HKEY_LOCAL_MACHINESoftwareMicrosoftWindows
CurrentVersionRun”子主鍵下建立一個(gè)字符串值 “CleanMRU”,設(shè)置其數(shù)據(jù)為"Wcript.exe D:TEMPCleanMRU.vbs"。嘿嘿,這樣才算大功告成。以后你每次開(kāi)機(jī),Windows就會(huì)自動(dòng)執(zhí)行該腳本以清除 “運(yùn)行”中的歷史記錄了。
限于篇幅,本文僅僅介紹了WSH有關(guān)注冊(cè)表修改部分的對(duì)象的初步使用。我們只要在腳本里加上一些簡(jiǎn)單的語(yǔ)句,就可以很方便地實(shí)現(xiàn)交互性的操作——當(dāng)然,這就需要大家掌握更多的關(guān)于WSH和VBScript的知識(shí)。如果感興趣的話,大家可以到微軟網(wǎng)站下載有關(guān)WSH和VBScript的幫助文檔,URL分別是http://www.microsoft.com/china/ scripting/windowshost/wshdoc.exe和http://www.microsoft.com/china/scripting/vbscript/download/ vbsdoc.exe(都是中文)。另外,在Windows的Samples目錄下,有一個(gè)WSH文件夾,那里面有不少.vbs和.js例程,大家可以去打開(kāi)來(lái)看看(鼠標(biāo)右擊圖標(biāo),選擇“編輯”),相信一定會(huì)有不少收獲的。
最后,如果你的機(jī)器上已經(jīng)安裝了Windows Scripting Host,而VBS程序仍然無(wú)法運(yùn)行的話,很可能是你自己或其他應(yīng)用程序修改了.VBS的關(guān)聯(lián)。據(jù)筆者所知,幾乎每臺(tái)機(jī)器上都裝有的“超級(jí)解霸”就會(huì)修改.VBS文件的關(guān)聯(lián)。沒(méi)關(guān)系的,你只要從“控制面板”—“添加/刪除程序”—“Windows安裝程序”—“附件”—“詳細(xì)資料”里先卸掉,然后再重新裝上“Windows Scripting Host”就可以了。
上一篇:利用WSH里的MapNetworkDrive方法腳本蠕蟲的傳播方式
欄 目:vb
本文標(biāo)題:Vbscript寫注冊(cè)表的方法
本文地址:http://mengdiqiu.com.cn/a1/vb/8032.html
您可能感興趣的文章
- 01-10VBScript教程 第十一課深入VBScript
- 01-10用VBSCRIPT控制ONSUBMIT事件
- 01-10VBScript語(yǔ)法速查及實(shí)例說(shuō)明
- 01-10VBScript教程 第七課使用條件語(yǔ)句
- 01-10vbscript 可以按引用傳遞參數(shù)嗎?
- 01-10VBScript教程 第二課在HTML頁(yè)面中添加VBscript代碼
- 01-10VBScript教程 第十四課在VBScript中使用對(duì)象
- 01-10VBScript教程 第六課VBScript運(yùn)算符
- 01-10VBScript的入門學(xué)習(xí)資料
- 01-10VBScript教程 第十二課VBScript頁(yè)面的簡(jiǎn)單樣例


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 01-10下載文件到本地運(yùn)行的vbs
- 01-10飄葉千夫指源代碼,又稱qq刷屏器
- 01-10SendKeys參考文檔
- 01-10什么是一個(gè)高效的軟件
- 01-10VBS中的正則表達(dá)式的用法大全 &l
- 01-10exe2swf 工具(Adodb.Stream版)
- 01-10VBS中SendKeys的基本應(yīng)用
- 01-10用VBSCRIPT控制ONSUBMIT事件
- 01-10VBScript教程 第十一課深入VBScript
- 01-10VBScript語(yǔ)法速查及實(shí)例說(shuō)明
隨機(jī)閱讀
- 01-10delphi制作wav文件的方法
- 01-10SublimeText編譯C開(kāi)發(fā)環(huán)境設(shè)置
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 04-02jquery與jsp,用jquery
- 01-11Mac OSX 打開(kāi)原生自帶讀寫NTFS功能(圖文
- 01-10C#中split用法實(shí)例總結(jié)
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子