AUfruf einer WMI-Provider-Methode aus PHP

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • AUfruf einer WMI-Provider-Methode aus PHP

    Hi leutz,

    sitz nun schon seit Wochen an folgendem Problem:

    Um Software zu inventarisieren (vorallem MS Win und Office) möchte ich aus der Registry den DigitalProductKey auslesen
    und daraus den Product-Key ermitteln (Algorithmus bekannt).

    Ich komm aber nicht an die Registry-Daten...

    Zuerst wird eine Verbindung zu dem Rechner (edv01) aufgebaut
    PHP-Code:
    $conn=new COM("WbemScripting.SWbemLocator");
    $conne=$conn->ConnectServer("edv01","\\root\\default:StdRegProv","administrator","passwort"); 
    soweit OK, wird auch kein Fehler ausgegeben.

    wenn ich jetzt auf die Daten zugreifen will...
    PHP-Code:
    $IDD=new VARIANT("Hallo",VT_BSTR); //Rückgabe-Wert
    $KeyPath=new VARIANT("SOFTWARE\\Microsoft\\Office\\10.0\\Registration\\{91110407-6000-11D3-8CFE-0050048383C9}",VT_BSTR); //Registry-Pfad
    $Key=new VARIANT("DigitalProductID",VT_BSTR); //Registry Schlüssel
    $empty=new VARIANT("",VT_EMPTY); //leerer Variant, für HKLM 
    und die Methode "getBinaryValue" aufrufen will...
    PHP-Code:
    $connection=$conne->getBinaryValue($empty,$KeyPath,$Key,$IDD); 
    Bekomm ich folgenden Fehler:
    Code:
    Fatal error: Call to undefined method variant::getBinaryValue()...
    Kann mir von euch einer sagen, was ich hier denn falsch mache?

    Danke und Gruß

    Robert

    PS: Doppelte Backslashes hab ich beachtet, werden hier aber nich abgedruckt

  • #2
    Ganz einfach: Es gibt diese Methode in der gewählten Klasse nicht.
    Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
    var_dump(), print_r(), debug_backtrace und echo.
    Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
    Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
    Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

    Kommentar


    • #3
      Die Methode ist eindeutig in der Klasse vorhanden, wenn ich das gleiche über VBA (aus Excel raus) mache, funzts einwandfrei.



      Komisch ist auch, wenn ich das ganze über den anderen Weg mache
      PHP-Code:
      $wmi = new COM("WinMgmts\:\{impersonationLevel=impersonate}!//edv01/root/default:StdRegProv"); 
      bekomm ich keine Fehlermeldung, $IDD wird aber als Typ VT_NULL zurückgegeben...

      Ob Slash oder Backslash scheint egal zu sein, bekomm beides mal das gleiche Ergebnis

      Kommentar


      • #4
        am komischsten ist, dass du über PHP sowas machen willst . Warum nicht über ASP oder WSH die Daten für PHP aufbereiten, z.B. in die DB Schreiben, in Textdatei ablegen, ... denn mit ASP oder WSH lässt sich die Arbeit mit solchen COM viel sauberer und bequemer gestalten.
        Zuletzt geändert von asp2php; 02.03.2005, 10:51.

        Kommentar


        • #5
          ich hab des ganze in PHP angefangen, weils anfangs noch mit viel handarbeit verbunden war.
          Dann kam WMI hinzu (für OS, Hotfixes, Software, Netzwerkkarte...) und ist so weiter gewachsen.

          Außerdem: von ASP und WSH versteh ich nich so viel und wollt alles in der gleichen Sprache.

          Aber hat sich sowieso geklärt, hab die Lösung gefunden:

          Statt diesem Konstrukt
          PHP-Code:
          $conne=$conn->ConnectServer("edv01","\\root\\default\:StdRegProv","administrator","passwort"); 
          hab ich folgendes verwendet
          PHP-Code:
          $conne=$conn->ConnectServer("edv01","\\root\\default","administrator","passwort");
          $stdreg=$conne->Get("StdRegProv"); 
          Und wenn ich dann die Methode ausführ
          PHP-Code:
                $RegQuery=$stdreg->getBinaryValue(0x80000002,"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion","DigitalProductId",$IID); 
          bekomm ich in $IID auch den gewünschten binären Wert.

          Glaub beim vorherigen Beispiel mit Office wars des Problem, daß er die { } nich so richtig übernommen hat... muß ich ma genauers testen

          PS: Falls einer wissen will, wie man mit PHP den CD-Key aus den in $IID enthaltenen Daten extrahieren kann, soll sich bitte melden...
          Zuletzt geändert von itzari; 03.03.2005, 08:45.

          Kommentar

          Lädt...
          X