Schreiben in die Registry unter Windows 7 /Vista



  • Hab ein Programm wo der User die Möglichkeit hat, dass Programm automatisch bei Anmeldung / Start des Sytems ausführen zu lassen.

    Wollte das nach "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run" machen wie üblich. Jedoch braucht man dafür Andministratorprivilegien. Über ein Manifest geht es nicht, weil das Programm ja nicht automatisch ohne Zutun starten würde, also dann nur mit dem Bestätigen des Starts.

    Hab in meinem Konfigurationsdialog nun schon die Buttons prepariert, so dass der Nutzer sofort sieht, dass er erhöhte Privilegien dafür braucht. Also alles ganz legitim.

    SendMessage(btn->Handle, BCM_SETSHIELD, 0, (int)DisplayShield);
    

    Aber nun muss ich mir die Privilegien zum Schreiben in die Registry zur Laufzeit beschaffen. Weiß jemand wie?

    Gruß
    int02h



  • Schreib in CURRENT_USER anstatt LOCAL_MACHINE. Benötigt keine Elevation und du erreichst das Gleiche.
    Wenn du wirklich das Programm unter jedem User in den Autostart setzen willst kannst du einfach eine zweite .exe über RSRC in den Heap laden oder auf der HD droppen und zB mittels des Verbs "runas" per ShellExecute mit Admin-Rechten starten, die dann das Hauptprogramm in der Registry (HKLM) registriert. Naja ist natürlich doch etwas mehr Aufwand.
    Ich meine mich allerdings dunkel zu erinnern, dass es nicht möglich ist einen Prozess während der Laufzeit neue Rechten anfordern zu lassen.
    Alternativ könntest du auch per Manifest einmalig Admin-Rechte fordern und dann einen kleinen Treiber installieren, der dein Programm bei jedem Startup leise mit Admin-Rechten startet.

    MfG, \x2A


Anmelden zum Antworten