![]() |
Frage zu Vista UAC und ShellExecute
Hallo DPler,
ich habe einen Updater für ein Programm geschrieben. Das funktioniert auch alles soweit, UAC und Zugriffsrechte sind berücksichtigt. Jetzt habe ich nur das Problem, daß das Updater-Setup einen UAC Dialog minimiert auslöst. Das Updater-Setup wird in das Temp-Verzeichnis des Users geladen und gestartet (verlangt Admin Rechte). Mein Hauptprogramm wird erst nach bestätigung des UAC Dialogs geschlossen. Gibt es also
Kennt sonst jemand einen Weg, nicht auf das ShellExecute zu warten und das Hauptprogramm direkt zu beenden? Sozusagen, bevor der UAC Dialog kommt? Gruß winkel79 |
Re: Frage zu Vista UAC und ShellExecute
mit ShellExecute weis ich keine Lösung, aber mit CreateMutex an dein Hauptprogramm kann eine Möglichkeit sein
Delphi-Quellcode:
hMutex := CreateMutex( nil, false, 'meinHauptprogramm VX.XX');
if WaitForSingleObject( hMutex, 50 ) = WAIT_TIMEOUT then begin SendMessage( HWND_BROADCAST, WM_MUTEX, 77501, 999501 ); Application.Terminate; end; |
Re: Frage zu Vista UAC und ShellExecute
Und was hat das jetzt mit dem Problem zu tun? Ausser dass du alle alle Fenster zwei Integerwerte schickst?
|
Re: Frage zu Vista UAC und ShellExecute
Ja, des mit dem CreateMutex verstehe ich auch nicht ganz in diesem Zusammenhang.
Nach etwas Suchen habe ich das Problem eingrenzen können: Die UAC prüft, ob das Aufrufende Handle den Focus hat bei ShellExecute. Also übergebe ich jetzt mal statt hInstance das Aktuelle Form.Handle und lege vorher den Focus auf es. Quelle: ![]() Aber schön ist das noch nicht. Geht gerade über Terminalserver z.B. nicht. Und für einen simplen Updater gleich ein COM-Interface mitinstallieren, um Zugriffsrechte auf das Programmverzeichnis zu haben - da fühl ich mich nicht wohl. Nicht das das ein Sicherheitsloch aufreißt. Besteht denn irgendwie die Möglichkeit, beim ShellExecute nicht zu warten. Oder ist dies die Auswirkung des UAC, daß erstmal alles gestoppt wird? Gruß winkel79 |
Re: Frage zu Vista UAC und ShellExecute
So, nun hab ichs. Ich danke mir ;)
Das ShellExeute muß als Handle den Wert des GetForegroundWindow erhalten. Dann kommt der UAC Prompt immer maximiert. Danke auch an die anderen für das Interesse. Ist ja nicht bei all meinen Threads so :? Gruß winkel79 |
Re: Frage zu Vista UAC und ShellExecute
Zitat:
|
Re: Frage zu Vista UAC und ShellExecute
Zitat:
Danke auf jeden Fall! :cheers: Gruß winkel79 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz