Einzelnen Beitrag anzeigen

Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#3

AW: Service: UAC Elevated Child Prozess im Benutzerkontext starten

  Alt 9. Mai 2011, 21:42
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?
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat