Registry Einträge für "All Users"



  • Hallo zusammen.

    ich brauche für meine Anwendung die Möglichkeit, für alle Benutzer, die damit arbeiten, einen Teil der Konfiguration identisch zu speichern.

    Bisher wird alles in der Registry unter HKEY_CURRENT_USER\Software\<Firma>\<Prg> gespeichert.
    Am geeignetsten wäre hierfür der Basis-Pfad HKEY_LOCAL_MACHINE.

    Blöderweise ist der aber nur mit speziellen Admin-Accounts zu beschreiben.
    Selbst ich, mit weitgehenden Admin-Rechten, kann da über mein Programm nichts eintragen.

    In einigen Artikeln im Netz habe ich Vorschläge gelesen, die den Rat geben, die nötigen Parameter eben bei der Installation des Programms in die Registry einzutragen.
    Dies geht aber nicht, weil die Einträge von jedem normalen Benutzer auch wieder geändert/ergänzt werden müssen. Das Programm hat eine eigene Benutzerverwaltung, die nichts mit der von Windows zu tun hat und dies auch nicht soll.

    Gerne würde ich die Registry unter HKEY_LOCAL_MACHINE dazu verwenden.
    Über HKEY_USERS zu iterieren und die Einträge abzugleichen ist natürlich auch nicht möglich. Dort sind ja die Rechte der zugehörigen User verknüpft.

    Ich habe mich zwar schon damit abgefunden, wieder zu den alten INI-Files zurückzukehren, aber ich wüsste schon gerne, ob es nicht doch eine Möglichkeit gibt. Hierzu habe ich auch die Dokus zu den alten "GetPrivateProfilString(..)" Methoden gelesen. Die bieten anscheinend über Flags an, die Speicherung parallel auch in der Registry vorzunehmen (Flag "Sys" für HKEY_LOCAL_MACHINE).
    Aber noch kann ich damit nichts anfangen, da es mir scheint, als würde es mir nicht weiterhelfen.

    Hat jemand von Euch eine Idee?

    Danke und Grüsse Helmut


  • Mod

    Auf die anderen Hives der anderen User hast Du gar keinen Zugriff.
    HKLM ist der richtige weg, und wenn Dein Programm als Admin ausgeführt wird, hast Du auch Rechte.

    Ich befürchte mal Du hast kein korrektes Manifest.

    Du kannst natürlich auch zu einem Hack greifen und von Deinem Setup die einfach Rechte für diesen Ast geben.

    Zu Ini Files und GetPrivateProfileString:
    Du nimmst eine Datei und verwendest ProgramData... oder oder oder



  • Vielen Dank Martin,

    die Sache mit dem Manifest klingt für mich am interessantesten.
    Leider kenne ich mich damit noch nicht aus.
    Was müsste man da machen?

    Die Anwendung muss auf alle Fälle von einem normalen Benutzer bedienbar sein, und dieser muss über die Bedienung der Anwendung auch diesen HKLM-Pfad beschreiben können, ohne erweiterte Systemberechtigungen zu haben.

    Die INI-Datei in "ProgramData" scheint mir bisher noch die beste Lösung zu sein.
    Der Vorteil hiervon wäre, dass ich sie einfach für eine weitere Installation wiederverwenden kann.
    Manchmal bekomme ich bei INI-Files Beklemmungen, wenn ich immer weider lese, dass die nur wegen der Kompatibilität zu den alten 16 Bit Systemen gedacht sind.
    Und sie bieten mir nicht die Speicherung von Binär-Daten, jedenfalls meines derzeitigen Wissens nicht.
    Ich sehe mich schon in absehbarer Zeit dazu gezwungen, eine eigene INI-File Verwaltung, mit eigenem Dateiformat zu schreiben.

    Ein paar Infos zum Manifest und zu Binärdaten in INI-Files wären noch super.

    Vielen Dank nochmal und Grüsse
    Helmut


  • Mod

    Mit einem Manifest erreichst Du das nicht. Dann wird deine EXE eben immer als Admin gestartet und der Benutzer wird gefragt ob er das darf.

    Vom Konzept her solltest Du ProgramData verwenden. Alles andere widerspricht dem wie MS sich diese Nutzung gedacht hat.

    HKLM kann nur ein Admin beschreiben. PUNKT! Außer DU verbiegst die Rechte für den Untereintrag, dann bist Du aber nicht mehr "Windows compatible"... worauf man sicher auch verzichten kann...

    Ich kenne jedoch Admins, die sehr "extrem" darauf reagieren, wenn sich Anwendungen über solche Tricks Zugang zu Bereichen verschaffen, auf die sie sonst keine Rechte haben.



  • Vielen Dank Martin,

    die Antwort hilft mir weiter!
    Also doch INI-File!


Log in to reply