VBScript實現對Windows註冊表的修改

來源:互聯網
上載者:User
vbscript|window|註冊表

  大名鼎鼎的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 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\.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

  Dim OperationRegistry
  Set OperationRegistry=WScript.CreateObject("WScript.Shell")
  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
  MsgBox("Success!")
  ?如果你真想這麼做,那就請你作好註冊表的備份。

  應用執行個體

  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
  MsgBox("Success!")



相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

Starter Package

SSD Cloud server and data transfer for only $2.50 a month

Get Started >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。