VBS随时监视注册表的变化,记录有变化的值或键等信息(包括一个文件内容比较函数)...
生活随笔
收集整理的這篇文章主要介紹了
VBS随时监视注册表的变化,记录有变化的值或键等信息(包括一个文件内容比较函数)...
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
代碼如下:
'效率有點低,而且有限制,算是第一個版本吧,有些不好的地方還請多多指教啊 compareRegister "log1.reg","log2.reg" '************************************** '功能:采用wmi監聽當前注冊表是否有變動,如果有變動,導出變動后的注冊表文件,然后比較導出前和導出后的文件的不同之處,并顯示出現 '參數:filename1表示注冊表監聽前的文件名,filename2表示注冊表修改變動后的文件名 '返回值:無 '************************************** Function compareRegister(filename1,filename2)wbemFlagReturnImmediately = 16wbemFlagForwardOnly = 32IFlags = wbemFlagReturnImmediately + wbemFlagForwardOnlyresult=""Set wmiServices = GetObject("winmgmts:root/default") Set dtmCreateTime = CreateObject("WbemScripting.SWbemDateTime")Set ws=WScript.CreateObject ("wscript.shell")Set colRegChanges = wmiServices.ExecNotificationQuery _("SELECT * FROM RegistryTreeChangeEvent " _& "WHERE Hive='HKEY_LOCAL_MACHINE' AND RootPath=''",, IFlags)ws.Run "regedit -e "&filename1,0,True '修改前的,導出注冊表文件ws.Popup "已經導出操作前注冊表為REG文件....",2Do While (True) Set TreeChange = colRegChanges.NextEventws.Run "regedit -e "&filename2,0,True '修改后的,導出注冊表文件ws.Popup "已經導出了修改后注冊表為REG文件。。。",2'Time_Created property is 64-bit and' must be converted into CIM_DateTime formatdtmCreateTime.SetFileTime TreeChange.Time_Created, false'Convert to VT_DATE format using GetVarDate' for printing to screenWScript.Echo "注冊表變動時間 = " & dtmCreateTime.GetVarDate() _& VBNewLine _& "主鍵根目錄 = " & TreeChange.Hive & VBNewLine _& "子目錄名稱 = "& TreeChange.RootPath &vbNewLine _& "創建時間為:"&treechange.time_created &vbNewLine _& "描述:"&treechange.security_descriptor&vbNewLine _compareDif filename1,filename2 '比較注冊表前后的兩個文件的內容變化Loop end Function'compareDif "d:\test1.txt","d:\test2.txt" ''************************************** '功能:比較兩個文件,顯示文件中不同的地方,前提是:filename2的行數一定要大于filename的行數 '參數:filename1表示注冊表監聽前的文件名,filename2表示注冊表修改變動后的文件名 '返回值:無 '************************************** Function compareDif(filename1,filename2)On Error Resume Nextmsg=""Const ForReading = 1, ForWriting = 2, ForAppending = 8Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0Set fso=CreateObject("scripting.filesystemobject")Set readfile1=fso.GetFile(filename1)Set readfile2=fso.GetFile(filename2)Set ts1=readfile1.OpenAsTextStream(ForReading,TristateUseDefault)Set ts2=readfile2.OpenAsTextStream(ForReading,TristateUseDefault)If Not ts1.AtEndOfStream thenbeforereg=Split(ts1.ReadAll,vbCrLf)End IfIf Not ts2.AtEndOfStream thenafterreg=Split(ts2.ReadAll,vbCrLf)End If ' ws.Popup "正在進行比較注冊表,不要關閉請稍等。。。。",5For i=0 To UBound(afterreg)-1If afterreg(i)<>beforereg(i) Thenmsg=msg&"--------------------------------------------"&vbCrLf&"操作前注冊表:"&beforereg(i-1)&vbcrlf&beforereg(i)&vbcrlf&"操作后注冊表:"&afterreg(i-1)&vbcrlf&afterreg(i)&vbcrlfEnd ifnext MsgBox msgSet ts2=nothingSet ts1=NothingSet readfile2=NothingSet readfile1=NothingSet fso=Nothing End Function
?
以上代碼測試可用,可參考。
轉載于:https://www.cnblogs.com/alterhu/archive/2012/04/08/2437837.html
總結
以上是生活随笔為你收集整理的VBS随时监视注册表的变化,记录有变化的值或键等信息(包括一个文件内容比较函数)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Microsoft Sync Frame
- 下一篇: MOSS 2010 修改列表的字段名及列