none
Computer nach Dateien durchsuchen RRS feed

  • Frage

  • Ich möchte ein externes Programm starten, weiß aber nicht wo der Nutzer es hininstalliert hat.

    Aus der Registry erfahre ich, ob es überhaupt installiert ist, aber leider nicht den Pfad.

    Gibt es eine Möglichkeit den Computer nach der Datei Anwendungx.exe zu durchsuchen?


    Gruß

    Dennis
    Dienstag, 21. April 2009 17:27

Antworten

  • Hallo Dennis,

    eine solche Möglichkeit gibt es, z.B. My.Computer.FileSystem.FindInFiles in Verbindung mit My.Computer.FileSystem.Drives. Sie hat allerdings den Nachteil, dass es bei heutigen Konfigurationen extrem lange dauern kann, bis der Sucherfolg eintritt. Daher wären jede andere zuverlässige Vorgehensweise (die auf den Einzelfall bezogen ist) als günstiger zu betrachten.

    Handelt es sich denn um eine bestimmte Anwendung?

    Dienstag, 21. April 2009 20:10
  • Du könntest zuerst mal im Standard-Verzeichnis nachschauen, ob die gesuchte Datei existiert ( if IO.File.Exist("C:/Programme/..." then ...)
    Wenn die Datei dort nicht existert würde ich nur die unterverzeichnisse von C:/Programme durchsuchen, weil es wesentlich weniger Aufwand ist, als die ganze HDD zu durchsuchen. - Oder einfach freundlich den User fragen, wo er das Programm installiert hat ;)
    Mittwoch, 22. April 2009 23:12

Alle Antworten

  • Du könntest, falls die Anwendung über den Windows Installer installiert wurde, den Pfad und weitere Informationen über die Windows Installer API herausfinden.

    http://msdn.microsoft.com/en-us/library/aa369558(VS.85).aspx
    Dienstag, 21. April 2009 18:35
  • Hallo Dennis,

    eine solche Möglichkeit gibt es, z.B. My.Computer.FileSystem.FindInFiles in Verbindung mit My.Computer.FileSystem.Drives. Sie hat allerdings den Nachteil, dass es bei heutigen Konfigurationen extrem lange dauern kann, bis der Sucherfolg eintritt. Daher wären jede andere zuverlässige Vorgehensweise (die auf den Einzelfall bezogen ist) als günstiger zu betrachten.

    Handelt es sich denn um eine bestimmte Anwendung?

    Dienstag, 21. April 2009 20:10
  • Schon mal vielen Dank so weit.

    Nein es handelt sich nicht um eine bestimmte Anwendung, sondern mehr um 3 oder 4..

    Aber als Beispiel kann man ja mal den Microsoft Baseline Security Analyzer nehmen, der nirgends den Pfad zu seiner exe speichert.

    Zwar gibt es diverse Keys in der Registry, die den Pafd enthalten, das sind jedoch diese Keys mit diesen Nummernkombinationen, und bei denen bin ich mir unsicher ob die auf jedem PC gleich sind, sonst würde ich die abfragen.

    Wobei MBSA über den Windows Installer installiert wird und hier die Möglichkeit aus Beitrag 2 greift.

    Gruß

    Dennis
    Mittwoch, 22. April 2009 14:55
  • Du könntest zuerst mal im Standard-Verzeichnis nachschauen, ob die gesuchte Datei existiert ( if IO.File.Exist("C:/Programme/..." then ...)
    Wenn die Datei dort nicht existert würde ich nur die unterverzeichnisse von C:/Programme durchsuchen, weil es wesentlich weniger Aufwand ist, als die ganze HDD zu durchsuchen. - Oder einfach freundlich den User fragen, wo er das Programm installiert hat ;)
    Mittwoch, 22. April 2009 23:12
  • So ähnlich habe ich mir das auch gedacht, erst den Standardpfad testen und dann erst Programme durchsuchen.

    Den Nutzer nach dem Pfad zu fragen, setzt einen entsprechenden Kenntnisstand voraus.

    Wenn ich meine Mutter beispielsweise nach dem Installationsordner für Programm frage, öffnet sie mir das Startmenü und sagt: Da!

    Hat grad mal jemand ein Codebeispiel an der Hand, an dem man sich orientieren kann?

    Gruß

    Dennis
    Donnerstag, 23. April 2009 16:50
  • Die Leute, die nicht wissen, wo das Programm installiert wird werden meist im Standardverzeichnis  installieren ;)
    Ansonsten könnte man das Startmenü nach dem entsprechenden Link durchsuchen, was sicher schneller funktioniert, als im Programme-Verzeichnis auf der HDD
    Donnerstag, 23. April 2009 18:08