Zitat von
Exceeder:
Bei CreateProcess scheint es zum Beispiel auch so zu sein, dass ein Programm welches im normalen Benutzerkontext arbeitet keinen Prozess erzeugen kann, welcher laut Manifest Administratorrechte benötigt. CreateProcess schlägt dann fehl (mit welcher Meldung genau weiß ich nicht mehr). Diesen Fall habe ich ja zum Beispiel, wenn das Hauptprogramm das Updatepaket herunterlädt und anschließend dann mit Setup.exe -update "MyZipPackage.zip" aufruft. Wenn man diesen Aufruf mit ShellExecute vornimmt erscheint korrekt die
UAC und fragt den Benutzer, ob er das ganze zulässen möchte und fordert noch das Administratorpasswort an.
Hat soetwas denn noch niemand gemacht?
That's by design. Die
UAC läuft auf dem Level von ShellExecute ab. CreateProcess ist eine ebene tiefer und hat keine Ahnung von
UAC.
Daher sollte man nicht asAdmin ins Manifest schreiben, wenn das Prog auch mal als normaler User laufen soll. Man kann auch im Programm noch nachträglich einen neuen Prozess mit Adminrechten starten:
http://blog.delphi-jedi.net/2008/04/...in-privileges/
http://blog.delphi-jedi.net/2008/03/...ta-with-jwscl/
Zitat von
Dust Signs:
Soweit ich mir denken kann ist CREATE_PRESERVE_CODE_AUTHZ_LEVEL für Prozesse in Jobs gedacht. Diese Prozesse kann man einschränken. Auch deren Kinder werden eingeschränkt. Jedoch ist es mit diesem Flag vermeidbar.
Ein SD bringt hier nix.