Hola a tod@s.
Donde trabajo me delegaron la función de bloquear el uso de memorias USB (o como le digan Flash Drive, PenDrive), lo podría hacer con el registro de windows o en el CMOS de cada pc, pero tengo un problema, no sólo se utilizan memorias USB, sino también otros dispositivos USB, tales como teclado, mouse, lectores de código de barra, balanzas, lectoras de tarjetas, etc, etc. Que si bloqueo el puerto USB ya sea vía registro de windows o CMOS, deshabilitaría lo que si se requiere usar.
Para tal caso y apoyándome en el antivirus que tenemos, éste trae opción de bloquear el dispositivo de almacenamiento USB, con eso resuelvo todo, pero hay sectores donde se les dejará autorización de usar una memoria previamente registrada, el antivirus también permite esto, por lo que sólo es poner el número de serie de la memoria USB y darle los permisos (Bloqueo, Lectura, Lectura/Escritura).
Pero ahí vienen mis problemas, ¿cómo saber el número de serie de esas memorias? Investigando hice dos programas que se suponen hacen eso y los resultados son diferentes, como podrán ver en la imagen siguiente.
Lo que está en texto consula es con una de las funciones que hice y el que está en el messagebox, es otra función, obviamente son programas diferentes, pero el problema principal es que el antivirus detecta otro serial y me pregunto, ¿cuál es lo más correcto?
El antivirus me lee esto:
Clase de dispositivo Almacenamiento en disco
Dispositivo Proveedor: Generic, Modelo: Mass Storage Device, Número de serie: 058F63666471
¿Qué podría hacer? Si no hago el programa, tendría que bloquear todas las USB y luego que conecten las memorias para ir viendo el serial que me da el antivirus, pero yo quería hacer un programa que desde mi pc metiera la memoria y me diera el serial, así de una sóla vez mando la tarea a la pc "víctima" donde bloqueo todo, menos la memoria autorizada.
Los programas que usé son:
Function Serial2
* Set Step On
Local objWMI,cCadWMI,oSistema,Salida
objWMI = Getobject("winmgmts:\\")
cCadWMI = "Select * from Win32_LogicalDisk"
oSistema = objWMI.ExecQuery(cCadWMI)
Salida = ""
For Each Disco In oSistema
If !Isnull(Disco.VolumeSerialNumber)
Salida = Salida + "Unidad: " + Disco.Name + " Serial: " + Disco.VolumeSerialNumber + Chr(13)
Endif
Next
Return Salida
Endfunc
Function Serial3
Parameters lDrv
If Vartype(lDrv)#"C"
lDrv = ""
Endif
Local Obj,objDrive,Drv
Obj = Createobject("Scripting.FileSystemObject")
For Each Drv In Obj.Drives
If Drv.Isready
If !Empty(lDrv)
If Upper(lDrv) = Drv.Driveletter
? "Drive Letter: "
?? Drv.Driveletter
*SET STEP ON
? "Serial Number: "
?? Transform(Drv.Serialnumber,"9999999999999999999")
? "Drive Type: "
?? Drv.Drivetype
? "File System: "
?? Drv.FileSystem
? "Free Space: "
?? Drv.FreeSpace / 1024
?? " kb"
? "Total Size: "
?? Drv.TotalSize / 1024
??" kb"
? "Volume Name: "
?? Drv.VolumeName
? "---------"
Endif
Else
? "Drive Letter: "
?? Drv.Driveletter
*SET STEP ON
? "Serial Number: "
?? Transform(Drv.Serialnumber
? "Drive Type: "
?? Drv.Drivetype
? "File System: "
?? Drv.FileSystem
? "Free Space: "
?? Drv.FreeSpace / 1024
?? " kb"
? "Total Size: "
?? Drv.TotalSize / 1024
??" kb"
? "Volume Name: "
?? Drv.VolumeName
? "---------"
Endif
Endif
Next
Endfunc
Serial3 es el que responde en la consola y Serial2 en el messagebox.
Dios L@s Bendiga
Saludos,
Daniel (Con 1 Estrella DCE de Microsoft)
www.debsconsultores.comNicaragua
"Si ustedes permanecen unidos a mí, y si permanecen fieles a mis enseñanzas, pidan lo que quieran y se les dará.
(Juan 15:7 DHH)
Bendito el varón que se fía en el SEÑOR, y cuya confianza es el SEÑOR.
(Jeremías 17:7 RV2000)