Nicht angeschlossene USB-Geräte auslesen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Nicht angeschlossene USB-Geräte auslesen

    Hallo erstmal,

    ich muss für meinen Chef ein Script schreiben, mit dem ich sämtliche USB-Geräte aus der Registry auslesen kann, die jemals angeschlossen waren.

    Das ganze soll mit einem VBScript unter verwendung von WMI gemacht werden.

    Nun mein Problem:

    1.) Ich kenn mich mit VB nich wirklich aus (<- wer hätte es gedacht.. ;))
    2.) Ich schaffe es mit WMI alle momentan angeschlossenen USB-Geräte auszulesen, jedoch nicht die die mal angeschlossen waren.

    Meine Frage? Hier ist sie:

    Das VB Script selber bekomm ich schon irgendwie zusammen gebastelt, aber wenn mir vllt jemand nen Tipp zu WMI geben könnte, dann wäre das echt praktisch ;)
    Ich denke es geht darum welche Klasse man in WMI benutzt. Mit der Klasse Win32_USBControllerDevice kann ich wie oben schon gesagt nur die USB-Geräte auslesen die momentan angeschlossen sind.


    Danke schonmal im vorraus :D :rolleyes:
    "Programming today is a race between sw-engineers striving to build bigger and better idiot-proof programs,
    and the universe trying to produce bigger and better idiots.
    So far, the universe is winning...."
  • Ich habe mich zwar nicht mit nicht vorhandenen USB-Controllern beschäftigt, aber wenn du das mit WMI auslesen willst und das tatsächlich in der Registry steht, ist klar dass du Win32_Registry das Mittel deiner Wahl sein sollte.
    ~ mfg SeBa

    Ich beantworte keine PMs zu Computer-/Programmierproblemen. Bitte wendet euch an das entsprechende Forum.

    [Blockierte Grafik: http://i.creativecommons.org/l/by-sa/3.0/80x15.png]
  • So,

    nach langem googeln und ein paar mehr oder weniger kurzen besprechungen mit meinem Chef, bin ich nun zu dem Schluss gekommen, dass man nicht angeschlossene USB Geräte nicht mittels WMI auslesen kann.

    Werde jetzt direkt aus der Registry lesen. Da bekomm ich zwar nicht ganz so viele Informationen raus, aber immerhin den Namen und die Class ;)

    Danke trotzdem für die Hilfe :)

    Greeetz Kardas!
    "Programming today is a race between sw-engineers striving to build bigger and better idiot-proof programs,
    and the universe trying to produce bigger and better idiots.
    So far, the universe is winning...."
  • Irgendwie hast du meine Antwort völlig ignoriert!?

    theKardas schrieb:

    Hallo erstmal,

    ich muss für meinen Chef ein Script schreiben, mit dem ich sämtliche USB-Geräte aus der Registry auslesen kann, die jemals angeschlossen waren.
    [...]
    2.) Ich schaffe es mit WMI alle momentan angeschlossenen USB-Geräte auszulesen, jedoch nicht die die mal angeschlossen waren.
    [...]
    Ich denke es geht darum welche Klasse man in WMI benutzt. Mit der Klasse Win32_USBControllerDevice kann ich wie oben schon gesagt nur die USB-Geräte auslesen die momentan angeschlossen sind.
    [...]:


    Daraufhin schrieb ich, dass du genau dafür die Klasse Win32_Registry verwenden kannst, vorrausgesetzt dass was du suchst, steht in der Registry drin.

    theKardas schrieb:

    So,

    nach langem googeln und ein paar mehr oder weniger kurzen besprechungen mit meinem Chef, bin ich nun zu dem Schluss gekommen, dass man nicht angeschlossene USB Geräte nicht mittels WMI auslesen kann.

    Werde jetzt direkt aus der Registry lesen. Da bekomm ich zwar nicht ganz so viele Informationen raus, aber immerhin den Namen und die Class ;)

    Danke trotzdem für die Hilfe :)

    Greeetz Kardas!


    Ich verstehe erstens warum es mit WMI nicht geht, aber man es direkt aus der Registry auslesen kann. Was man direkt aus der Registry lesen kann, kann man auch per WMI da rauslesen. Der Verzicht auf WMI bedeutet in der Regel den Verlust der Möglichkeit es Remote von anderen Rechnern auszulesen, dass sollte dir klar sein. Dass du nicht ganz soviele Informationen über Geräte erhälst liegt in der Natur der Sache. Sie sind ja grade nicht vorhanden und man kann sie nicht fragen und Windows merkt sich nur einige Eigenschaften der Geräte, ob nu WMI oder nicht, Infos die nicht verfügbar sind lassen sich nicht auslesen.
    ~ mfg SeBa

    Ich beantworte keine PMs zu Computer-/Programmierproblemen. Bitte wendet euch an das entsprechende Forum.

    [Blockierte Grafik: http://i.creativecommons.org/l/by-sa/3.0/80x15.png]
  • Und wieder einmal Stelle ich fest dass ich noch nicht viel Ahnung habe von dem was ich Rede ;)

    Du hast natürlich recht, man kann mit WMI alles auslesen was auch in der Registry steht, wenn man nur weiß wie.

    Ich habe jetzt eine Lösung gefunden, die meines erachtens nach nicht sehr viel mit den WMI-Klassen zu tun hat:

    Quellcode

    1. const HKEY_LOCAL_MACHINE = &H80000002
    2. strComputer = "."
    3. Set StdOut = WScript.StdOut
    4. Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &_
    5. strComputer & "\root\default:StdRegProv")
    6. strKeyPath = "SYSTEM\CurrentControlSet\Enum\USBSTOR"
    7. oReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrValues
    8. For Each USBDevice In arrValues
    9. StdOut.WriteLine USBDevice
    10. Next
    Alles anzeigen


    Was haltet Ihr davon?

    Greeetz Kardas
    "Programming today is a race between sw-engineers striving to build bigger and better idiot-proof programs,
    and the universe trying to produce bigger and better idiots.
    So far, the universe is winning...."
  • Dein Objekt oReg ist ein WMI-Objekt der Klasse Win32_Registry. Da du es per nun WMI ausliest, kannst du strComputer (also ".") durch einen beliebigen Hostname austauschen (auf dem du Admin-Rechte) hast um die Informationen Remote auszulesen.
    ~ mfg SeBa

    Ich beantworte keine PMs zu Computer-/Programmierproblemen. Bitte wendet euch an das entsprechende Forum.

    [Blockierte Grafik: http://i.creativecommons.org/l/by-sa/3.0/80x15.png]