Entwickler-Ecke

Windows API - Rückkehr zum normalen User


jakobwenzel - Sa 14.02.09 14:04
Titel: Rückkehr zum normalen User
Hallo zusammen!

Bei der Update-Funktion von meinem Programm werden bei Bedarf Admin-Rechte so angefordert:

Delphi-Quelltext
1:
ShellExecute(0,'runAs',PChar(Application.ExeName),PChar('StartUpdate "'+UpdateFilename+'" '+Inttostr(Application.Handle)),nil,SW_SHOWNORMAL);                    

Unter XP wird dann der Ausführen-Als-Dialog angezeigt, unter Vista sollte die UAC-Abfrage kommen ("sollte", weil ungetestet).

Wenn das Update fertig ist, wird das geupdatete Programm wieder gestartet, ganz normal über ShellExecute:

Delphi-Quelltext
1:
ShellExecute(0,'open',PChar(fn),'updated',nil,SW_SHOWNORMAL);                    

Unter XP läuft das ganze dadurch immernoch als Admin-User und nicht als normaler - was schlecht ist, da mein Programm Daten im Anwendungsdaten-Verzeichnis braucht. (Unter Vista ist es ja immernoch der gleiche Benutzer, nur mit mehr Rechten - das ist OK).
Gibt es einen praktikablen Weg, die Datei wieder als normaler Benutzer zu starten?

mfg
jakobwenzel


Delete - Sa 14.02.09 14:07

Nutze nicht Shellexecute sondern Suche im MSDN IMPERSONATELOGGEDONUSER. Ein Beispiel habe ich hier: http://www.michael-puff.de/Artikel/Impersonate.shtml


jakobwenzel - Sa 14.02.09 14:27

Danke, funktioniert perfekt!

Das ganze ist sehr gut beschrieben auf deiner Seite, nur der Download der Demo ist kaputt. :?


Delete - Sa 14.02.09 14:30

Komisch. Keine Ahnung, wo die Datei hin ist.