Ich verwende einen WindowsService unter Windows Server 2012 und muss die Identität eines Domänenadministratorbenutzers annehmen (der auch zur lokalen Administratorgruppe auf dem Computer hinzugefügt wird).Wie LogonUser() aufgerufen wird, um ein uneingeschränktes vollständiges Token in einem Windows-Dienst mit aktivierter Benutzerkontensteuerung abzurufen?
UAC ist auf dem System aktiviert, und LogonUser wird mit den Anmeldeinformationen mit LOGON32_LOGON_INTERACTIVE aufgerufen. Es scheint, dass ein eingeschränktes Token anstelle eines vollständigen Tokens zurückgegeben wird.
Dies verursacht die administrative Aufgabe, die ich versuche zu scheitern.
Wie kann LogonUser in dieser Situation richtig aufgerufen werden, sodass anstelle eines eingeschränkten Tokens ein vollständiges Token zurückgegeben wird?
PS: Ich stieß auf eine verwandte Frage hier How can I get elevated permissions (UAC) via impersonation under a non-interactive login? , aber es zeigt nicht die genauen Anrufe, die gemacht werden müssen, um das volle Token zu erhalten.
Wird dies ein primäres Token oder ein imitiertes sein? – Dev28
Nur 'LOGON32_LOGON_NETWORK' erzeugt ein Identitätswechsel-Token. Alle anderen Optionen, einschließlich 'LOGON32_LOGON_BATCH', erzeugen ein primäres Token. (Natürlich können Sie immer ein Identitätswechsel-Token in ein primäres Token oder umgekehrt konvertieren.) –
Siehe auch http://StackOverflow.com/a/35027525/886887 –