Nachtrag-Frage zu "Wie unter Userrechten Vista Exe automatisiert austauschen?"

15/12/2007 - 20:37 von Andy Dorwald | Report spam
Hallo,

das mit dem ShellExecute und dem Verb "runas" ist eine unglaublich tolle
Sache. Jetzt habe ich nur noch ein kleines aber feines Problem!

Meine Hauptanwendung prüft, ob eine neue version um Netz liegt, wenn ja,
startet es per "runas" eine Exe, die das kopieren übernimmt - soweit, so
wunderpràchtig. Diese aufgerufene Exe soll aber nun am Ende des Kopierens
die Hauptanwendung starten. Klingt trivial? Ist es aber nicht. Denn diese
Exe làuft ja nun in einem anderen (Admin-) Benutzerkontext. Wenn sie also
dieHauptanwendung per ShellExecute und dem Verb "open" öffnet, wird diese
für den "Admin" geöffnet und somit werden z. B. die
"CurrentUser"-RegistrySetting und auch das Benutzerverzeichnis des Admins
verwendet.

Meine Frage nun: Wie mache ich es, dass die Koper-Exe, welche mit "runas"
gestartet wurde, nun die Programm-Exe wieder für den User startet, der
"eigentlich" an dieser Maschine gerade angemeldet ist???

P.S. Diese Frage hatte ich heute schon im alten Original-Thread (22.11.07)
gestellt.
Aber da dort das Datum schon ziemlich alt war, jetzt noch einmal mit
aktuellem Datum!

VG
Andy


"Thorsten Doerfler" schrieb:

Alternativ kann man die zweite Anwendung auch
mit ShellExecute und dem Verb "runas" ausführen.
 

Lesen sie die antworten

#1 Thorsten Doerfler
16/12/2007 - 16:36 | Warnen spam
Andy Dorwald schrieb:
das mit dem ShellExecute und dem Verb "runas" ist eine unglaublich tolle
Sache. Jetzt habe ich nur noch ein kleines aber feines Problem!

Meine Hauptanwendung prüft, ob eine neue version um Netz liegt, wenn ja,
startet es per "runas" eine Exe, die das kopieren übernimmt - soweit, so
wunderpràchtig. Diese aufgerufene Exe soll aber nun am Ende des Kopierens
die Hauptanwendung starten. Klingt trivial? Ist es aber nicht. Denn diese
Exe làuft ja nun in einem anderen (Admin-) Benutzerkontext. Wenn sie also
dieHauptanwendung per ShellExecute und dem Verb "open" öffnet, wird diese
für den "Admin" geöffnet und somit werden z. B. die
"CurrentUser"-RegistrySetting und auch das Benutzerverzeichnis des Admins
verwendet.

Meine Frage nun: Wie mache ich es, dass die Koper-Exe, welche mit "runas"
gestartet wurde, nun die Programm-Exe wieder für den User startet, der
"eigentlich" an dieser Maschine gerade angemeldet ist???



Nur als Idee: Zur Kopier-Exe gesellt sich eine Starter-Exe hinzu.
Diese wird von Deiner Hauptanwendung normal gestartet und startet per
ShellExecuteEx(!) und dem Verb "runas" die Kopier-Exe, wartet auf
deren Ende und startet die Hauptanwendung.

ShellExecuteEx sollte in der Struktur SHELLEXECUTEINFO den
Prozesshandle der Kopier-Exe übergeben, wenn SHELLEXECUTEINFO.fMask SEE_MASK_NOCLOSEPROCESS gesetzt ist. Mit WaitForSingleObject(hProcess,
INFINITE) wartet die Starter-Exe auf das Ende des Kopier-Prozesses.

Ich hoffe Dir reichen diese Stichpunkte, um selber zu testen.

P.S. Diese Frage hatte ich heute schon im alten Original-Thread (22.11.07)
gestellt.
Aber da dort das Datum schon ziemlich alt war, jetzt noch einmal mit
aktuellem Datum!



Gute Newsreader bringen den gesamten Thread wieder auf Augenhöhe. ;-)

Thorsten Dörfler
Microsoft MVP Visual Basic

vb-hellfire visual basic faq | vb-hellfire - einfach anders
http://vb-faq.de/ | http://www.vb-hellfire.de/

Ähnliche fragen