Auslesen des installierten Programms

DrMueller

Erfahrenes Mitglied
Hi Leute,
ich glaube ich habe so was ähnliches schon mal gefragt:
Ich müsste herausfinden, ob auf einem PC z.B. Outlook installiert ist.
Ich habe folgende Funktion, welche das EXE selber ausliest:
Code:
Public Function LocateFile(ByVal strFileName As String, ByVal strRootPath As String) As String
  On Error Resume Next
  
  Dim strBuffer As String
  Dim lngResult As Long
  Const MAX_PATH = 260
  LocateFile = ""
  strBuffer = String$(MAX_PATH, 0)
  lngResult = SearchTreeForFile(strRootPath, strFileName, strBuffer)
  If lngResult <> 0 Then
      If InStr(strBuffer, vbNullChar) > 0 Then
          LocateFile = Left$(strBuffer, InStr(strBuffer, vbNullChar) - 1)
      End If
  End If
 End Function


klappt soweit auch, aber wenn ich z.B. "Outlook.exe" und als Startpfad nur "C:\" mitgebe, dauert die Suche gerade bei älteren PCs eine ganze Weile. Da dies relativ oft aufgerufen wird, kann ich diese Lösung nicht verwenden.

Ich habe von einer Alternative gehört, und zwar kann man über die Registry bei Microsoft\Uninstall alle Programme auslesen, das Problem ist, es kann jede beliebige Outlook-Version sein. Ich müsste, daher den ganzen Registry-Teil nach Outlook absuchen, was mir auch nicht sauber erscheint.


Gibt es da möglicherweise nach eine Alternative, welche etwas sauberer und schneller ist?




Wie immer vielen Dank im Voraus.
 
Zurück