Das ist also der Code, um dem neuen Prozess Admin-Rechte zu verschaffen? - Das hab ich jetzt nicht wirklich verstanden: Du erstellst ein User-Token. Dazu erstellst du ein 2. Token, welches mit dem ersten verknüpft ist. Dann erstellst du ein 3. Token, welches aus dem 2. Token dupliziert wurde. Soweit komme ich schon nicht mehr mit. ABER: Jetzt schließt du vorzeitig das 2. Token. Das will mir nicht in den Kopf.
UserToken ist das Standardtoken vom aktuell eingeloggten Benutzer. Jedes Benutzertoken hab ab Vista laut diversen Seiten ein LinkedToken. Dieses muss man verwenden, um den Prozess
UAC elevated zu starten.
Ich konvertiere das Token dann in ein Primary Token namens ElevatedToken. Danach kann ich das "alte" Token ja ohne weiteres schließen

Das Neue bleibt ja erhalten.
Und was mich auch brennend interessiert ist, was passiert, wenn eine Anwendung mit Admin-Manifest ohne Admin-Rechte gestartet wurde.
Das habe ich noch gar nicht ausprobiert.
Übrigens: Da ist ein größerer Fehler drin: Laut
MSDN kommt in ElevationType eine Zahl ungleich Null rein, wenn es Admin-Rechte zu verteilen gibt, ansonsten kommt da Null rein. Die Prüfung auf 3 ist somit nicht 100%ig sicher!
Da hast du dich verguckt. Ich frage nicht die TokenElevation, sondern die TokenElevationType Klasse ab. Der
MSDN Eintrag dazu ist hier zu finden:
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
Wobei ich sehe grade, dass ich den Typen als DWord deklariert habe. Ist das korrekt für ein C++ Enum oder muss da besser Byte hin?