天天看點

vbs修改系統資料庫

VBS腳本修改系統資料庫

大名鼎鼎的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等。

   主鍵路徑:

   主鍵路徑就是目标鍵在系統資料庫中的主鍵位置,各個主鍵之間用"\"符分隔開。如:"Software\Microsoft\Windows\CurrentVersion\Policies\"

   鍵值:

   鍵值參數直接接在主鍵路徑之後。例如一個完整的路徑如下所示:

   "HKCR\Software\Microsoft\Windows\CurrentVersion\Policies\NoRun"

方法詳解

  1、RegRead操作詳解

  讀操作RegRead主要是用來讀取系統資料庫中主鍵的預設值或鍵值的資料,我們可以将讀得的資料送到相應的變量中,再利用VB中的MsgBox()函數将該資料顯示出來,這就達到了讀取系統資料庫中資料的目的(也可以利用對象OperationRegistry的方法Popup()将讀取的資料送至螢幕), 例如:

   'read.vbs(将以下代碼存為read.vbs檔案)

   Dim Read_Data1,Read_Data2

   Read_Data1=OperationRegistry.RegRead("HKCR\.xxf\")

   '讀取根鍵HKEY_CLASSES_ROOT之下的.xxf主鍵的預設值,并将該資料送至變量Read_Data1

   Read_Data2=OperationRegistry.RegRead("HKCR\.xxf\value")

   '讀取.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,并置其預設值?quot;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之下建立一個二進制型鍵值value3,并置其初始值為十六進制的ff

3、RegDelete操作詳解

  删除操作RegDelete主要是用來删除系統資料庫中已存在的主鍵或鍵值,該操作是一種極其危險的操作,它能将主鍵或鍵值毫不留情的在系統資料庫中“砍掉”,無論該鍵值下面有多重要的資料,它都能暢行無阻,是以在使用該操作時務必小心。

   删除操作的參數形式與讀操作的參數形式幾乎完全相同,隻是有一點小小的差別,那就是删除操作不需要将操作的傳回值送給某一變量,例如:

'delete.vbs

OperationRegistry.RegRead("HKCR\.xxf\value")

'删除.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="HKLM\System\CurrentControlSet\Control\ComputerName\ComputerName\ComputerName"

ComputerName=ReadComputerName.RegRead(RegPath)

MsgBox("計算機名為"&ComputerName)

  2、隐藏快捷方式圖示上的小箭頭

'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) '禁用“開始”菜單中的“運作”功能

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="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

轉載自:http://www.cnblogs.com/heimirror/archive/2008/06/25/1229483.html

繼續閱讀