利用VBS實現簡單的註冊表操作

2009-03-30 13:38
一.VBS簡介:
1.VBS代碼在本地是通過Windows Script Host(WSH)解釋執行的。VBS腳本的執行離不開WSH,WSH是微軟提供的一種基於32位Windows平臺的、與語言無關的腳本解釋機制,它使得腳本能夠直接在Windows桌面或命令提示符下運行。利用WSH,用戶能夠操縱WSH對象、ActiveX對象、註冊表和文件系統。在Windows 2000下,還可用WSH來訪問Windows NT活動目錄服務。
2. 用VBS編寫的腳本程序在窗口界面是由wscript.exe文件解釋執行的,在字符界面由cscript.exe文件解釋執行。wscript.exe是一個腳本語言解釋器,正是它使得腳本可以被執行,就象執行批處理一樣。
二.VBS腳本的實例應用:
1.註冊表解鎖:
DIM WSH
SET WSH=WSCRIPT.CreateObject("WSCRIPT.SHELL")  
****'擊活WScript.Shell對象
WSH.POPUP("解鎖註冊表編輯器!")                                    
**** '顯示彈出信息“解鎖註冊表編輯器!”
WSH.Regwrite"HKCU\Software\Microsoft\Windows\CurrentVersion
\Policies\System\DisableRegistryTools",0,"REG_DWORD"
****'給註冊表編輯器解鎖
WSH.POPUP("註冊表解鎖成功!")
****'顯示彈出信息“註冊表解鎖成功!”
2.關閉Win NT/2000的默認共享:
Dim WSHShell
****'定義變量
set WSHShell=CreateObject("WScript.shell")
****'創建一個能與操作系統溝通的對象WSHShell
Dim fso,dc
Set fso=CreateObject("Scripting.FileSystemObject")
****'創建文件系統對象
set dc=fso.Drives
****'獲取所有驅動器盤符
For Each d in dc
Dim str
WSHShell.run("net share"&d.driveletter &"$ /delete")
****'關閉所有驅動器的隱藏共享
next
WSHShell.run("net share admin$ /delete")
WSHShell.run("net share
ipc$ /delete")
****'關閉admin$和ipc$管道共享
3.顯示本機IP:
Dim dd
Set dd
=CreateObject("MSWinsock.Winsock")
IPAddress=WS.LocalIP
MsgBox "Local IP=" & IPAddress
4.執行外部程序:
DIM objShell
set objShell=wscript.createObject("wscript.shell")
iReturn=objShell.Run("cmd.exe /C set var=world", 1, TRUE)
保存爲.vbs文件即可。在這段代碼中,我們首先設置了一個環境變量,其名爲var,而值爲world,用戶可以使用%Comspec%來代替cmd.exe,並且可以把命令:set var=world改成其它的命令,這樣就可以使它可以運行任意的命令.
5.重新啓動指定的IIS服務:
Const ADS_SERVICE_STOPPED = 1
Set objComputer = GetObject("WinNT://MYCOMPUTER,computer")
Set objService = objComputer.GetObject("Service","MYSERVICE")
If (objService.Status = ADS_SERVICE_STOPPED) Then
objService.Start
End If
將它以startsvc.vbs爲名保存在C盤根目錄。並通過如下命令執行:cscript c:\startsvc.vbs。運行後,經你指定的IIS服務項將被重新開啓。
6.顯示計算機名:
Dim name
Set name=WScript.CreateObject("WScript.Shell")
Dim ComputerName,RegPath
RegPath="HKLM\System\CurrentControlSet\Control\ComputerName\ComputerName\ComputerName"
ComputerName=name.RegRead(RegPath)
MsgBox("計算機名爲"&ComputerName)
7.隱藏快捷方式上的箭頭:
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)
8.向Windows中添加自啓動程序
 該程序能在開機時自動運行。
'AddAutoRunProgram.vbs
'假設該程序在c:\myfile文件夾中,文件名爲autorun.exe

Dim rrr
Set rrr=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!")
9.改造“開始”菜單
'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) '禁用“開始”菜單中的“關閉系統”功能
.VBS操作註冊表:
用VBScript修改註冊表,必須先創建一個能於操作系統溝通的對象,再利用該對象的各種方法對註冊表進行操作,創建這個對象的方法和格式如下:
Dim gg
Set gg=WScript.CreateObject("WScript.Shell")
對象的方法:
1.對註冊表的讀操作RegRead
2.對註冊表的寫操作RegWrite
3.對註冊表的刪操作RegDelete
參數:三種操作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主鍵

     防範VBS病毒,可以選擇將WSH卸載,只要打開控制面板,找到“添加/刪除程序”,點選“Windows安裝程序”,再鼠標雙擊其中的“附件”一項,然後再在打開的窗口中將“Windows Scripting Host”一項的“√”去掉,然後連續點兩次“確定”就可以將WSH卸載。或者,你也可以點擊“我的電腦”→“查看”→“文件夾選項”,在彈出的對話框中,點擊“文件類型”,然後刪除VBS、VBE、JS、JSE文件後綴名與應用程序的映射,都可以達到防範VBS腳本病毒的目的。


發佈了15 篇原創文章 · 獲贊 32 · 訪問量 34萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章