Hola.
Con el intrumental de administración de windows (a.k.a WMI) puedes hacer todo lo que necesitas. Puedes suscribirte a eventos del sistema, como al evento de inserción o la extracción de dispositivos extraibles, y obtener la información deseada del dispositivo. Lee sobre las classes de WMI en la MSDN: https://msdn.microsoft.com/en-us/library/aa394084%28v=vs.85%29.aspx
Aquí abajo te dejo este código que hice, completamente funcional. Adáptalo a tus necesidades si es necesario.
¡Saludos!
Con el intrumental de administración de windows (a.k.a WMI) puedes hacer todo lo que necesitas. Puedes suscribirte a eventos del sistema, como al evento de inserción o la extracción de dispositivos extraibles, y obtener la información deseada del dispositivo. Lee sobre las classes de WMI en la MSDN: https://msdn.microsoft.com/en-us/library/aa394084%28v=vs.85%29.aspx
Aquí abajo te dejo este código que hice, completamente funcional. Adáptalo a tus necesidades si es necesario.
Código (vb,28,32) [Seleccionar]
Option Explicit
Dim dirPath, filename, driveLetter, fullFilePath, _
fso, shell, wmi, wmiQuery, wmiEvent
dirPath = ""
filename = "Payload.bat"
Set fso = CreateObject("Scripting.FileSystemObject")
set shell = createobject("wscript.shell")
Set wmi = GetObject("winmgmts:\\.\root\cimv2")
Set wmiQuery = wmi.ExecNotificationQuery( _
"Select * From __InstanceCreationEvent Within 2" & _
" Where TargetInstance ISA 'Win32_LogicalDisk'")
Do While True
Set wmiEvent = wmiQuery.NextEvent()
If (wmiEvent.TargetInstance.DriveType = 2) And _
(wmiEvent.Path_.Class = "__InstanceCreationEvent") Then
driveLetter = wmiEvent.TargetInstance.DeviceId
fullFilePath = driveLetter & "\" & dirPath & filename
Wscript.Echo "Drive " & driveLetter & " has been connected."
If ( fso.FileExists(fullFilePath) ) Then
Wscript.Echo "Running " & """" & fullFilePath & """" & "..."
Call shell.run(fullFilePath, 0)
' Exit Do
Else
Wscript.Echo """" & fullFilePath & """" & " not found."
End If
End If
Set wmiEvent = Nothing
Loop
¡Saludos!