Einträge aus Systemsteuerung-Software auslesen



  • Hallo,

    ich möchte mit einem selbstgeschriebenen Programm die aktuell installierten Software-Anwendungen auslesen.
    Ich benötige das, um festzustellen, welche Optionen in meinem Programm aktiviert sind und welche nicht.
    Zur Erklärung: Mein Programm führt eine Datenbankabfrage durch und das Ergebnis soll später in gewisse Formate exportiert werden.
    Also muss ich z.B. prüfen, ob sich Excel auf dem jeweiligen Rechner befindet.

    Ich habe schon versucht, direkt aus der Registry die Einträge zu lesen, allerdings habe ich als Benutzer (unter Windows 2000) keine Rechte, die Registrierung zu öffnen.
    Es ist mir bisher lediglich gelungen, auf die Einträge unter HKEY_CURRENT_USER zuzugreifen. Allerdings müsste ich, um die anderen Software-Anwendungen zu sehen auf die Einträge unter HKEY_LOCAL_MACHINE zugreifen können. Doch hier komme ich nicht weiter.
    Habe schon versucht, die Privilegien zu ändern, allerdings ohne Erfolg.

    Daher meine Frage: Gibt es noch eine andere Möglichkeit, die installierten Prgrammen anzuzeigen? Ich möchte ja nichts an den Einträgen ändern, sondern nur lesend darauf zugreifen und diese dann auswerten. Es würde also genügen, wenn ich die installierten Programmen in einem Array o.ä. dargestellt bekommen würde.



  • Doch das geht über die Registry. Als Benutzer unter 2000 mußt du sie nur exoplizit im "nur-lesen-Modus" öffnen.



  • kannst du mir da noch einen kleinen Schubser geben...
    Bisher versuche ich das Öffnen folgendermassen:

    HKEY RegHandle;
        if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\\\Windows\\CurrentVersion\\Uninstall", NULL, KEY_ALL_ACCESS, &RegHandle) != ERROR_SUCCESS)
            {
              ShowMessage("Der Schlüssel wurde nicht geöffnet oder gefunden!");
            }
    


  • OK, kann jetzt die Registry öffnen
    (KEY_READ statt KEY_ALL_ACCESS) 🙂

    Nur sehe ich jetzt nicht alle Einträge, die in der Systemsteuerung unter Software vorhanden sind.
    Gibt's da noch einen anderen Pfad?
    (z.B. sehe ich keinen Microsoft Office Eintrag, wenn ich den oben angegeben Registry-Pfad auslese, aber unter Software taucht dieser Eintrag auf 😕



  • Ich sag nur DisplayName...

    -junix



  • Original erstellt von junix:
    **Ich sag nur DisplayName...

    -junix**

    Hää!?

    Hab gerade sämtliche Hilfen durchforstet, aber ich finde da keinen passenden Eintrag für mein Problem...

    WinAPI stellt für mich doch noch ein zu grosses Rätsel dar!



  • Das ist keine Befehl oder Funktion, sondern ein Eintrag in der Registry!



  • Hat nix mit WinAPI sondern mit Registry-Schlüsseln zu tun... schau dir mal die Werte in den jeweiligen Registryschlüsseln unter ..\Uninstall an... Ein bis zwei Werte kommen immer wieder vor... Wenn du dir die malgenau anschaust... naja, du wirsts finden (:

    -junix

    <edit>Ahja, das kann man sich mit etwas mehr überlegen und weniger posten auch selber erarbeiten. Immerhin hat man ja eine Suchfunktion im Regeditor...
    Wie hast du denn den Key gefunden? (-;
    </edit>

    [ Dieser Beitrag wurde am 12.12.2002 um 13:47 Uhr von junix editiert. ]



  • @junix:
    da liegt ja gerade mein Dilemma. Bei uns hier in der Firma herrscht eine sehr strikte Policy. Daher sind unter anderem auch die Befehle regedit bzw regedt32 gesperrt (sind nicht ausführbar).
    Deshalb habe ich mir ein kleines Testprogramm geschreiben, mit welchem ich auf die Registry zugreifen kann. Hier kann ich aber keine Suchfunktion benutzen (nicht implementiert). Daher ist es für mich sehr mühsam, an die entsprechenden Infos aus der Registry ranzukommen.
    Aber der Tipp mit dem DisplayName hat mir sehr geholfen.

    Den Key hab ich durch googeln herausgefunden.



  • Ah Ok, dann sorry (:

    Aber du hast unterdessen gemerkt, dass der Wert DisplayName eine Klartextbeschreibung zurückliefert hoff ich? (-;

    -junix



  • Jupp!
    Jetzt kann ich wieder ne Weile lang weiterarbeiten.

    THX @ all



  • Hallo

    Einige Einträge stehen nicht im Hauptschlüssel HKEY_LOCAL_MACHINE..., sondern im Hauptschlüssel HKEY_CURRENT_USER ...



  • habe ich auch schon herausgefunden...

    Allerdings ist das für meine Anwendung nicht mehr relevant, da die Benutzer keine Installationsrechte besitzen und die Anwendungen, auf die geprüft werden soll nur von Administratoren installiert werden kann.

    Aber trotzdem danke für den Hinweis


Anmelden zum Antworten