vbs註冊表操作詳解

原址:http://hi.baidu.com/li9861120
 
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 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!")

實例:
①創建主鍵、創建各類型的鍵值。 
②讀取鍵值並分析鍵值類型。 
③枚舉主鍵及鍵值。 
④判斷鍵或鍵值是否存在。 
⑤查詢註冊表鍵的操作權限。 
⑥監視註冊表根鍵、主鍵、鍵值,當發現變動時提示。 
複製代碼 代碼如下:
'''註冊表查詢/操作 
On Error Resume Next 
Const HKEY_CLASSES_ROOT = &H80000000'''設置註冊表5大根鍵,HKCR-----------① 
Const HKEY_CURRENT_USER = &H80000001'''HKCU 
Const HKEY_LOCAL_MACHINE = &H80000002'''HKLM 
Const HKEY_Users = &H80000003'''HKU 
Const HKEY_Current_Config = &H80000005'''HKCC 
Const REG_SZ = 1'''設置註冊表鍵值類型,字符串型---------------------------② 
Const REG_EXPAND_SZ = 2'''擴展字符串型 
Const REG_BINARY = 3'''二進制型 
Const REG_DWORD = 4'''雙字節型 
Const REG_MULTI_SZ = 7'''多字符串型 
Const KEY_QUERY_VALUE = &H0001'''查詢註冊表權限,查詢數值-----------------③ 
Const KEY_SET_VALUE = &H0002'''設置數值 
Const KEY_CREATE_SUB_KEY = &H0004'''創建子項 
Const DELETE = &H00010000'''刪除項值 
'''-----------------配置環境(路徑)----------------------------------------00 
strComputer = "." 
Set WshShell = WScript.CreateObject("WScript.Shell") 
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv") 
strKeyRoot = HKEY_LOCAL_MACHINE 
Regpath = "HKEY_LOCAL_MACHINE" 
strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Run" 
WshSHell.popup "設置路徑【HKLM\Software\Microsoft\Windows\CurrentVersion\Run】成功"&vbcrlf&vbcrlf&vbcrlf&vbcrlf&vbcrlf&"5 秒鐘後本窗口將自動關閉!", 5, "內容", 0 + 64 
'''-----------------創建主鍵"REG_KEY_SZ"----------------------------------01 
strKeyPathNew = "Software\Microsoft\Windows\CurrentVersion\Run\User_baomaboy\"'''注意因爲是新建主鍵,要多加個“\” 
oReg.CreateKey strKeyRoot, strKeyPathNew 
WshSHell.popup "創建主鍵【HKLM\Software\Microsoft\Windows\CurrentVersion\Run\User_baomaboy\】成功"&vbcrlf&vbcrlf&vbcrlf&vbcrlf&vbcrlf&"5 秒鐘後本窗口將自動關閉!", 5, "內容", 0 + 64 
'''-----------------創建字符串值"REG_SZ"----------------------------------02 
strValueName="1字符串名" 
strValue="字符串值" 
oReg.SetStringValue strKeyRoot, strKeyPath, strValueName, strValue 
WshSHell.popup "創建字符串【HKLM\Software\Microsoft\Windows\CurrentVersion\Run\1字符串名】成功"&vbcrlf&vbcrlf&vbcrlf&vbcrlf&vbcrlf&"5 秒鐘後本窗口將自動關閉!", 5, "內容", 0 + 64 
'''-----------------創建雙字節值"REG_DWORD"-------------------------------- 
strValueName="2雙字節名" 
strValue=1 
oReg.SetDWORDValue strKeyRoot, strKeyPath, strValueName, strValue 
WshSHell.popup "創建雙字節值【HKLM\Software\Microsoft\Windows\CurrentVersion\Run\2雙字節名】成功"&vbcrlf&vbcrlf&vbcrlf&vbcrlf&vbcrlf&"5 秒鐘後本窗口將自動關閉!", 5, "內容", 0 + 64 
'''-----------------創建多字符串"REG_MULTI_SZ"----------------------------- 
strValueName="3多字符串名" 
arrStringValues = Array("QQ25926183", "userbaomaboy","LLKJ", "玲瓏科技") 
oReg.SetMultiStringValue strKeyRoot, strKeyPath, strValueName, arrStringValues 
WshSHell.popup "創建多字符串【HKLM\Software\Microsoft\Windows\CurrentVersion\Run\3多字符串名】成功"&vbcrlf&vbcrlf&vbcrlf&vbcrlf&vbcrlf&"5 秒鐘後本窗口將自動關閉!", 5, "內容", 0 + 64 
'''-----------------創建擴展字符串"REG_EXPAND_SZ"-------------------------- 
strValueName = "4擴展字符串名" 
strValue = "%PATHEXT%" 
oReg.SetExpandedStringValue strKeyRoot, strKeyPath, strValueName, strValue 
WshSHell.popup "創建擴展字符串【HKLM\Software\Microsoft\Windows\CurrentVersion\Run\4擴展字符串名】成功"&vbcrlf&vbcrlf&vbcrlf&vbcrlf&vbcrlf&"5 秒鐘後本窗口將自動關閉!", 5, "內容", 0 + 64 
'''-----------------創建二進制值"REG_BINVRY_SZ"---------------------------- 
RegPathEr=Regpath&"\Software\Microsoft\Windows\CurrentVersion\Run\5二進制值" 
WshSHell.RegWrite RegPathEr,1,"REG_BINARY" 
WshSHell.popup "創建二進制值【HKLM\Software\Microsoft\Windows\CurrentVersion\Run\5二進制值】成功"&vbcrlf&vbcrlf&vbcrlf&vbcrlf&vbcrlf&"5 秒鐘後本窗口將自動關閉!", 5, "內容", 0 + 64 
'''----------------- 讀取字符串值"REG_VALUE"------------------------------- 
oReg.GetStringValue strKeyRoot, strKeyPath, "1字符串名", strRunCommand 
WshSHell.popup "讀取字符串值:"&vbcrlf&vbcrlf&strRunCommand&vbcrlf&vbcrlf&vbcrlf&vbcrlf&vbcrlf&"5 秒鐘後本窗口將自動關閉!", 5, "內容", 0 + 64 
'''----------------- 讀取雙字節值"REG_DWORD"------------------------------- 
oReg.GetDWORDValue strKeyRoot, strKeyPath, "2雙字節名", strRunCommand 
WshSHell.popup "讀取雙字節值:"&vbcrlf&vbcrlf&strRunCommand&vbcrlf&vbcrlf&vbcrlf&vbcrlf&vbcrlf&"5 秒鐘後本窗口將自動關閉!", 5, "內容", 0 + 64 
'''----------------- 讀取多字符串值"REG_MULTI_SZ"-------------------------- 
oReg.GetMultiStringValue strKeyRoot, strKeyPath, "3多字符串名", arrValues 
For Each strValue In arrValues 
DuoString=DuoString&vbcrlf&strValue 
Next 
WshSHell.popup "讀取多字符串值:"&vbcrlf&vbcrlf&DuoString&vbcrlf&vbcrlf&vbcrlf&vbcrlf&vbcrlf&"5 秒鐘後本窗口將自動關閉!", 5, "內容", 0 + 64 
'''----------------- 讀取擴展字符串"REG_EXPAND_SZ"------------------------- 
oReg.GetExpandedStringValue strKeyRoot, strKeyPath, "4擴展字符串名", strValue 
WshSHell.popup "讀取擴展字符串值:"&vbcrlf&vbcrlf&strValue&vbcrlf&vbcrlf&vbcrlf&vbcrlf&vbcrlf&"5 秒鐘後本窗口將自動關閉!", 5, "內容", 0 + 64 
'''----------------- 讀取二進制值"REG_BINVRY_SZ"---------------------------- 
oReg.GetBinaryValue strKeyRoot, strKeyPath, "5二進制值", strValue 
For i = lBound(strValue) to uBound(strValue) 
ErString=ErString&strValue(i) 
Next 
WshSHell.popup "讀取二進制值:"&vbcrlf&vbcrlf&ErString&vbcrlf&vbcrlf&vbcrlf&vbcrlf&vbcrlf&"5 秒鐘後本窗口將自動關閉!", 5, "內容", 0 + 64 
'''----------------- 枚舉主鍵"SUB_KEY"-------------------------------------- 
oReg.EnumKey strKeyRoot, strKeyPath, arrSubKeys 
For Each subkey In arrSubKeys 
ArrSubKeyStr=ArrSubKeyStr&vbcrlf&subkey 
Next 
WshSHell.popup "枚舉主鍵:"&vbcrlf&vbcrlf&ArrSubKeyStr&vbcrlf&vbcrlf&vbcrlf&vbcrlf&vbcrlf&"5 秒鐘後本窗口將自動關閉!", 5, "內容", 0 + 64 
'''----------------- 枚舉鍵值和鍵值類型"KEY_Value_Types"-------------------- 
oReg.EnumValues strKeyRoot, strKeyPath, arrValueNames, arrValueTypes 
For i=0 To UBound(arrValueNames) 
If Len(arrValueNames(i)) > 0 Then 
Select Case arrValueTypes(i) 
Case REG_SZ ValueType=" >>>是:字符串值" 
Case REG_EXPAND_SZ ValueType=" >>>是:擴展字符串值" 
Case REG_BINARY ValueType=" >>>是:二進制值" 
Case REG_DWORD ValueType=" >>>是:雙字節值" 
Case REG_MULTI_SZ ValueType=" >>>是:多字符串值" 
End Select 
arrValueStr=arrValueStr&vbcrlf&arrValueNames(i)&ValueType 
End If 
Next 
WshSHell.popup "枚舉鍵值和類型:"&vbcrlf&vbcrlf&arrValueStr&vbcrlf&vbcrlf&vbcrlf&vbcrlf&vbcrlf&"5 秒鐘後本窗口將自動關閉!", 5, "內容", 0 + 64 
'''----------------- 枚舉鍵值和鍵值內容一"KEY_Value_Contenct"---------------- 
oReg.EnumValues strKeyRoot, strKeyPath, arrValueNames, arrValueTypes 
For i=0 To UBound(arrValueNames) 
If Len(arrValueNames(i)) > 0 Then 
oReg.GetStringValue strKeyRoot,strKeyPath,arrValueNames(i),strValue'''適應於字符串型 
ValueStr=ValueStr&vbcrlf&arrValueNames(i)&vbcrlf&strValue 
end if 
Next 
WshSHell.popup "枚舉鍵值和內容一:"&vbcrlf&vbcrlf&ValueStr&vbcrlf&vbcrlf&vbcrlf&vbcrlf&vbcrlf&"5 秒鐘後本窗口將自動關閉!", 5, "內容", 0 + 64 
'''----------------- 枚舉鍵值和鍵值內容二"KEY_Value_Contenct"---------------- 
oReg.EnumValues strKeyRoot, strKeyPath, arrValueNames, arrValueTypes 
i=0 
For Each strValue in arrValueNames 
If Len(strValue) > 0 Then 
i=i+1 
oReg.GetStringValue strKeyRoot,strKeyPath,strValue,strRunCommand'''適應於字符串型 
intLength = Len(strRunCommand) 
if intLength > 35 then'''美化回顯,(可再加代碼判路徑是否包含斷漢字) 
strRunCommand = Left(strRunCommand, 20)&"……"&Right(strRunCommand, 13) 
end if 
StrRoot= i&".【"&strValue&"】"&vbCRLF&" "&strRunCommand 
ARoot=ARoot&vbCRLF&StrRoot 
End If 
Next 
WshSHell.popup "枚舉鍵值和內容二:"&vbcrlf&vbcrlf&ARoot&vbcrlf&vbcrlf&vbcrlf&vbcrlf&vbcrlf&"5 秒鐘後本窗口將自動關閉!", 5, "內容", 0 + 64 
'''----------------- 刪除鍵值"REG_VALUE"------------------------------------- 
oReg.DeleteValue strKeyRoot, strKeyPath, "5二進制值" 
WshSHell.popup "刪除鍵值:"&vbcrlf&vbcrlf&Regpath&"\"&strKeyPath&"\5二進制值"&vbcrlf&vbcrlf&vbcrlf&vbcrlf&vbcrlf&"5 秒鐘後本窗口將自動關閉!", 5, "內容", 0 + 64 
'''----------------- 刪除主鍵"SUB_KEY"--------------------------------------- 
oReg.DeleteKey strKeyRoot, strKeyPathNew 
WshSHell.popup "刪除主鍵:"&vbcrlf&vbcrlf&Regpath&"\"&strKeyPathNew&vbcrlf&vbcrlf&vbcrlf&vbcrlf&vbcrlf&"5 秒鐘後本窗口將自動關閉!", 5, "內容", 0 + 64 
'''-----------------判斷鍵值是否存在----------------------------------------- 
strValue="""病毒""" 
oReg.GetStringValue strKeyRoot,strKeyPath,strValue,strRunCommand 
If IsNull(strRunCommand) Then 
WshSHell.popup strValue&"此註冊表鍵值不存在."&vbcrlf&vbcrlf&vbcrlf&vbcrlf&vbcrlf&"5 秒鐘後本窗口將自動關閉!", 5, "內容", 0 + 64 
Else 
WshSHell.popup strValue&"註冊表中存在此鍵值."&vbcrlf&vbcrlf&vbcrlf&vbcrlf&vbcrlf&"5 秒鐘後本窗口將自動關閉!", 5, "內容", 0 + 64 
End If 
'''----------------- 檢查註冊表訪問權限"Check Up Extent Of Power"------------ 
oReg.CheckAccess strKeyRoot, strKeyPath, KEY_QUERY_VALUE, bHasAccessRight 
If bHasAccessRight = True Then 
aaa="可以查詢數值" 
Else 
aaa="不可查詢數值" 
End If 
oReg.CheckAccess strKeyRoot, strKeyPath, KEY_SET_VALUE, bHasAccessRight 
If bHasAccessRight = True Then 
bbb="可以設置數值" 
Else 
bbb="不可設置數值" 
End If 
oReg.CheckAccess strKeyRoot, strKeyPath, KEY_CREATE_SUB_KEY, bHasAccessRight 
If bHasAccessRight = True Then 
ccc="可以創建主鍵" 
Else 
ccc="不可創建主鍵" 
End If 
oReg.CheckAccess strKeyRoot, strKeyPath, DELETE, bHasAccessRight 
If bHasAccessRight = True Then 
ddd="可以刪除鍵值" 
Else 
ddd="不可刪除鍵值" 
End If 
WshSHell.popup "註冊表訪問權限:"&vbcrlf&vbcrlf&Regpath&"\"&strKeyPath&vbcrlf&vbcrlf&aaa&vbcrlf&bbb&vbcrlf&ccc&vbcrlf&ddd&vbcrlf&vbcrlf&vbcrlf&vbcrlf&vbcrlf&"5 秒鐘後本窗口將自動關閉!", 5, "內容", 0 + 64 
'''-----恢復註冊表原樣-------- 
oReg.DeleteValue strKeyRoot, strKeyPath, "4擴展字符串名" 
oReg.DeleteValue strKeyRoot, strKeyPath, "3多字符串名" 
oReg.DeleteValue strKeyRoot, strKeyPath, "2雙字節名" 
oReg.DeleteValue strKeyRoot, strKeyPath, "1字符串名" 
'''-----------------監視註冊表鍵值"REG_KEY_SZ"------------------------------- 
'''用以對註冊表中HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\1字符串名"分支下的所有更改內容進行監視。 
'Set wmiServices = GetObject("winmgmts:root/default") 
'Set wmiSink = WScript.CreateObject("WbemScripting.SWbemSink", "SINK_") 
'wmiServices.ExecNotificationQueryAsync wmiSink, _ 
'"SELECT * FROM RegistryValueChangeEvent WHERE Hive='HKEY_LOCAL_MACHINE' AND " & _ 
'"KeyPath='SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run' AND ValueName='1字符串名'" 
'WScript.Echo "開始監視註冊表HKLM_Run主鍵鍵值的值的變化......" & vbCrLf 
'While(1) 
'WScript.Sleep 1000 
'Wend 
'Sub SINK_OnObjectReady(wmiObject, wmiAsyncContext) 
'WScript.Echo ".........註冊表改變......" & vbCrLf & _ 
'"----------監視註冊表鍵值的值變化-----------" & vbCrLf & _ 
'wmiObject.GetObjectText_() 
'WScript.Quit(0)'''用作發現修改則提示後退出 
'End Sub 
'''-----------------監視註冊表主鍵"REG_SubKey_SZ"----------------------------- 
'''監視註冊表,以發現對 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 的任何更改。 
'Set wmiServices = GetObject("winmgmts:root/default") 
'Set wmiSink = WScript.CreateObject("WbemScripting.SWbemSink", "SINK_") 
'wmiServices.ExecNotificationQueryAsync wmiSink, _ 
'"SELECT * FROM RegistryKeyChangeEvent WHERE Hive='HKEY_LOCAL_MACHINE' AND " & _ 
'"KeyPath='SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run'" 
'WScript.Echo "開始監視註冊表HKLM_Run主鍵的鍵值變化......" & vbCrLf 
'While(1) 
'WScript.Sleep 1000 
'Wend 
'Sub SINK_OnObjectReady(wmiObject, wmiAsyncContext) 
'WScript.Echo ".........註冊表改變......" & vbCrLf & _ 
'"----------監視註冊表主鍵鍵值變化-----------" & vbCrLf & _ 
'wmiObject.GetObjectText_() 
'WScript.Quit(0)'''用作發現修改則提示後退出 
'End Sub 
'''-----------------監視註冊表根鍵"REG_RootKey_SZ"---------------------------- 
'''監視註冊表,以發現對 HKLM 的任何更改。 
Set wmiServices = GetObject("winmgmts:root/default") 
Set wmiSink = WScript.CreateObject("WbemScripting.SWbemSink", "SINK_") 
wmiServices.ExecNotificationQueryAsync wmiSink, _ 
"SELECT * FROM RegistryTreeChangeEvent WHERE Hive='HKEY_LOCAL_MACHINE' AND RootPath=''" 
WScript.Echo "開始監視註冊表HKLM根鍵的所有變化......" & vbCrLf 
While(1) 
WScript.Sleep 1000 
Wend 
Sub SINK_OnObjectReady(wmiObject, wmiAsyncContext) 
WScript.Echo ".........註冊表改變......" & vbCrLf & _ 
"----------監視註冊表根鍵所有變化-----------" & vbCrLf & _ 
wmiObject.GetObjectText_() 
WScript.Quit(0)'''用作發現修改則提示後退出 
End Sub


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章