Тема: VBScript: отслеживание подключения устройств USB
Автор идеи - Alexbootch.
Два варианта скрипта.
' Пример сценария асинхронного отслеживания подключения устройств USB
Sub SINK_OnObjectReady(objReceivedEvent, objAsyncContext)
Wscript.Echo "Name: " & objReceivedEvent.TargetInstance.Name
Wscript.Echo "FileSystem: " & objReceivedEvent.TargetInstance.FileSystem
Wscript.Echo "FreeSpace: " & objReceivedEvent.TargetInstance.FreeSpace
Wscript.Echo "Size: " & objReceivedEvent.TargetInstance.Size
Wscript.Echo "VolumeName: " & objReceivedEvent.TargetInstance.VolumeName
Wscript.Echo "VolumeSerialNumber: " & objReceivedEvent.TargetInstance.VolumeSerialNumber
End Sub
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set MySink = WScript.CreateObject( _
"WbemScripting.SWbemSink","SINK_")
objWMIservice.ExecNotificationQueryAsync MySink, _
"SELECT * FROM __InstanceCreationEvent WITHIN 5 WHERE " & _
"TargetInstance ISA 'Win32_LogicalDisk'" & _
" AND TargetInstance.DriveType = 2"
While (True)
Wscript.Sleep(1000)
Wend
' Пример сценария синхронного отслеживания подключения устройств USB
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set objEvents = objWMIService.ExecNotificationQuery _
("SELECT * FROM __InstanceCreationEvent WITHIN 5 WHERE " & _
"TargetInstance ISA 'Win32_LogicalDisk'" & _
" AND TargetInstance.DriveType = 2")
Do While(True)
Set objReceivedEvent = objEvents.NextEvent
Wscript.Echo "Name: " & objReceivedEvent.TargetInstance.Name
Wscript.Echo "FileSystem: " & objReceivedEvent.TargetInstance.FileSystem
Wscript.Echo "FreeSpace: " & objReceivedEvent.TargetInstance.FreeSpace
Wscript.Echo "Size: " & objReceivedEvent.TargetInstance.Size
Wscript.Echo "VolumeName: " & objReceivedEvent.TargetInstance.VolumeName
Wscript.Echo "VolumeSerialNumber: " & objReceivedEvent.TargetInstance.VolumeSerialNumber
Loop
Есть одна особенность: постоянно идёт опрос дисковода А:\. Причём опрос может продолжаться и после завершения скрипта, и даже после логоффа (замечено на WinXP SP2), проходя только после перезагрузки машины. Таким образом, на машинах с дисководом А:\ используйте с осторожностью.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.