Seite 1 von 2

COMate / WMI und WIN32_PRODUCT Abfrage

Verfasst: 16.12.2011 13:09
von alen
Hallo Community,

ich brauch mal einen Schubs. Ich bräuchte ein Codebeispiel das mir über eine WMI Abfrage alle installierten Programmnamen und deren Installationspfad ausgibt.

Zum Einsatz kommt aktuell COMate.

Ich spiele mit folgenden Codeschnipsel herum, bekomme aber keine brauchbaren Ergebnisse raus:
(Das stammt aus einem Umbau eines Codebeispieles von COMate und ist nur ein Ausschnitt)

Wäre cool wenn mich jemand hierbei schubsen könnte ;-)

Grüße
Alen

Code: Alles auswählen

Procedure Get_Software()
  ; Usage: Get_Driver()
  ; ReturnValues:
  ;            |- Fills a numbered structured List with Data
  ;  
  Protected objWMIService.COMateObject, printer.COMateObject 
  Protected colPrinter.COMateEnumObject 
  
  counter.l = 0
  
  strComputer.S = "." 
  objWMIService = COMate_GetObject("winmgmts:\\" + strComputer + "\root\cimv2", "") 
  If objWMIService 
    colPrinter = objWMIService\CreateEnumeration("ExecQuery('SELECT * FROM WIN32_PRODUCT')") 
    If colPrinter 
      printer = colPrinter\GetNextObject() 
      While printer  
        Software(counter)\Caption        = printer\GetStringProperty("Caption")
        Software(counter)\InstallSource  = printer\GetStringProperty("InstallSource")
        
        counter + 1
        printer\Release() 
        printer = colPrinter\GetNextObject() 
      Wend 
      colPrinter\Release() 
    EndIf 
    objWMIService\Release()  
  EndIf 
EndProcedure 

Re: COMate / WMI und WIN32_PRODUCT Abfrage

Verfasst: 16.12.2011 13:38
von jpd
Hallo Alen,

Hier ein Beispiel der von Comate Plus stamm funzioniert fehlerfrei!

Ciao
jpd

Code: Alles auswählen

;/////////////////////////////////////////////////////////////////////////////////
;***COMate***  COM automation through iDispatch.
;*===========
;*
;*WMI demo - list softwares.
;/////////////////////////////////////////////////////////////////////////////////

IncludePath "..\..\"
XIncludeFile "COMatePLUS.pbi"

Procedure Get_softwares() 
   Protected objWMIService.COMateObject, software.COMateObject 
   Protected colsoftware.COMateEnumObject 

   strComputer.s = "." 
   objWMIService = COMate_GetObject("winmgmts:\\" + strComputer + "\root\cimv2", "") 
   If objWMIService 
      colsoftware = objWMIService\CreateEnumeration("ExecQuery('Select * FROM WIN32_PRODUCT')") 
      If colsoftware 
         software = colsoftware\GetNextObject() 
         While software 
            Debug "Name        =  " + software\GetStringProperty("Name") 
            Debug "Vendor   =  " + software\GetStringProperty("Vendor")
            Debug "InstallSource  =  " + software\GetStringProperty("InstallSource")
            Debug "----------------------------------------------------------------" 
            software\Release() 
            software = colsoftware\GetNextObject() 
         Wend 
         colsoftware\Release() 
      EndIf 
      objWMIService\Release()  
   EndIf 
EndProcedure 

Get_softwares()

Re: COMate / WMI und WIN32_PRODUCT Abfrage

Verfasst: 16.12.2011 14:24
von alen
Hei jpd,

auch wenn ich Deinen Code nehme, kommen keine Ergenbnisse raus.

Seltsam. Der WMI Beisielcode aus den COMate Plus Beispielen zum Auflisten von Prozessen läuft sauber.
Kann es sein das nicht alle Softwarepakete angezeit werden über diese WMI Abfrage - ExecQuery('Select * FROM WIN32_PRODUCT') ? Evtl. nur die, die als MSI Installation installiert wurden ?

Ich wundere mich gerade. Vielleicht muss ich mir da was neues ausdenken wenn ich an die installierten Programme kommen will.

Grüße
Alen

Re: COMate / WMI und WIN32_PRODUCT Abfrage

Verfasst: 16.12.2011 14:42
von jpd
Hallo Alen,

was für ein betriebsystem verwendest du?
bist du vielleich mit eingeschränkte zugriffe angemeldet?

andere WMI abfragen funktionieren?

Ciao
jpd

Re: COMate / WMI und WIN32_PRODUCT Abfrage

Verfasst: 16.12.2011 14:50
von Kiffi
Hallo Alen,

Dein Schnippsel ist korrekt und zeigt (zumindest mir) alle installierten Programme an.

Ist das vielleicht ein Rechte-Problem?

Grüße ... Kiffi

// jpd war schneller :-)

Re: COMate / WMI und WIN32_PRODUCT Abfrage

Verfasst: 16.12.2011 14:51
von alen
Hei jpd,

hier in der Firma bin ich mit Windows XP unterwegs.
Ob ich mit eingeschränkten Rechten Unterwegs bin kann ich so genau nicht sagen.
Habe schon weitergehende Rechte. Bin da nicht als einfacher User unterwegs.

Andere WMI Abfragen klappen bestens. Nur hier wurden die Programme nicht per Hand installiert sondern per Softwareverteilungs Agent. Daher meine Vermutung mit der eventuellen Anzeige von nur MSI Paketen oder nur die, die mit einer eindeutigen IDs installiert werden "Bsp.: {90120409-6000-11D3-8CFE-0150048383C9}".

Aber da forsche ich noch ein wenig weiter.

Grüße
Alen

Re: COMate / WMI und WIN32_PRODUCT Abfrage

Verfasst: 16.12.2011 14:54
von Kiffi
werden die installierten Programme denn in der Systemsteuerung korrekt angezeigt?

Grüße ... Kiffi

Re: COMate / WMI und WIN32_PRODUCT Abfrage

Verfasst: 16.12.2011 15:08
von alen
Hallo Kiffi,

ja, aber sowas von einer langen Liste :-)

Grüße
Alen

Re: COMate / WMI und WIN32_PRODUCT Abfrage

Verfasst: 16.12.2011 15:27
von Kiffi
ich hab mal n Tool von mir hochgeladen:

http://tuebbentools.bplaced.net/sis.exe

Wenn Dir dort die Programme angezeigt werden, dann
kann ich heute Abend mal nach dem Source schauen
und Dir schicken.

Grüße ... Kiffi

Re: COMate / WMI und WIN32_PRODUCT Abfrage

Verfasst: 16.12.2011 15:40
von alen
Hallo Kiffi,

aus Deiner EXE kommt was raus = lange Liste mit installierten Programmen.
Aber deutlich mehr als aus dem COMate Beispielcode.

Grüße
Alen