Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: danny920825 en 18 Enero 2014, 07:06 am



Título: [VBS] Ayuda sobre objeto nuevo (Para mi)
Publicado por: danny920825 en 18 Enero 2014, 07:06 am
Hola, hace algun tiempo Elektro me posteo un codigo que monitoreaba la conexion y desconexion de cualkier dispositivo USB en el sistema. Por el momento me asuste con el codigo y pense que con el tiempo sabria que dice ahi. Pues el caso es que el tiempo paso y sigo sin saber que dice ahi. El codigo es el siguiente:


 
Citar
 
Código
  1. Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
  2.  
  3.    Set wmiEvent = objWMIService.ExecNotificationQuery( _
  4.       "Select * From __InstanceCreationEvent Within 1" & _
  5.           " Where TargetInstance ISA 'Win32_PnPEntity'")
  6.  
  7.    While True
  8.       Set objEvent = wmiEvent.NextEvent()
  9.       Set objUSB = objEvent.TargetInstance
  10.       strName = objUSB.Name
  11.       strDeviceID = objUSB.DeviceID
  12.       Set objUSB = Nothing
  13.  
  14.       Set colDrives = objWMIService.ExecQuery( _
  15.           "Select * From Win32_LogicalDisk Where DriveType = 2")
  16.  
  17.       For Each objDrive in colDrives
  18.           strDriveLetter = objDrive.DeviceID
  19.       Next
  20.  
  21.       Set colDrives = Nothing
  22.  
  23.       WScript.Echo strName & " Se ha montado como " & strDriveLetter
  24.    Wend
  25.  
  26.    Set wmiEvent = Nothing
  27.    Set objWMIService = Nothing

si alguien me puede explicar mas sobre ese objeto porque no se mucho ingles como par leer el archivo de ayuda y los traductores no son recomendables en programacion.



[MOD]: Utiliza las etiquetas para insrtar código.


Título: Re: [VBS] Ayuda sobre objeto nuevo (Para mi)
Publicado por: Eleкtro en 18 Enero 2014, 14:49 pm
si alguien me puede explicar mas sobre ese objeto

¿Que es exáctamente lo que no entiendes?, pues hay varias referencias a objetos declarados en ese trozo de código ...aunque todas tienen que ver con WMI.

WMI (Windows Management Instrumentation) es una infraestructura para obtener diversa información del sistema haciendo querys.

Citar
Código
  1. Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")

Lo que está entre paréntesis es una expresión para conectar con el namespace del objeto (en este caso .\root\cimv2) donde el punto representa cualquier PC (podría especificarse otro nombre de máquina o dirección), y winmgmts: es un prefijo que nunca cambia.

~> Connecting to WMI Objects (http://technet.microsoft.com/en-us/library/bb684728.aspx)
~> Windows Remote Management and WMI (http://msdn.microsoft.com/en-us/library/aa384463%28v=vs.85%29.aspx)

Citar
Código
  1.    Set wmiEvent = objWMIService.ExecNotificationQuery( _
  2.      "Select * From __InstanceCreationEvent Within 1" & _
  3.          " Where TargetInstance ISA 'Win32_PnPEntity'")

Con esa query lo que haces es subscribirte a un evento, pues cuando insertas o extraes un dispositivo sucede un evento en el sistema, y de esta manera se reporta a ti, y la class Win32_PnPEntity representa las propiedades de un dispositivo plug&play.

Por ejemplo, el evento __InstanceCreationEvent ocurre cuando un dispositivo se conecta/crea, __InstanceDeletionEvent cuando un dispositivo de extrae/elimina, y el evento __InstanceModificationEvent cuando un dispositivo se modifica.

~> __InstanceCreationEvent class (http://msdn.microsoft.com/en-us/library/aa394649%28v=vs.85%29.aspx)
~> Win32_PnPEntity class (http://msdn.microsoft.com/en-us/library/aa394353%28v=vs.85%29.aspx)
~> Receiving a WMI Event (http://msdn.microsoft.com/en-us/library/aa393013%28v=vs.85%29.aspx)

Dentro del búcle, el resto de métodos, propiedades del objeto, y querys, creo que són más fáciles de entender sin necesidad de explicaciones, pero si no entiendes algo de ahí entonces requiere más lectura en inglés por tu parte (cosa que ya has dejado clara que no quieres), así que lo dejo aquí.

Saludos!