Beispiel-code: Ein service-Aufrufe CreateProcessAsUser() ich möchte den Prozess zu laufen, in der Sitzung des Benutzers, nicht auf session 0
Suche ich Beispiel-code:
Für eine service-Aufrufe CreateProcessAsUser() ich möchte den Prozess zu laufen, in der Sitzung des Benutzers, nicht in Sitzung 0
bisher der erstellte Prozess läuft nur wie ein Dienst, der in Sitzung 0
InformationsquelleAutor kevinwaite | 2011-09-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser entfernt wurde von einigen alten code, startete eine Konsolenanwendung, die von einem Dienst. Er arbeitete unter NT4, aber ich habe es noch nicht getestet mit eine moderne version von Windows kann so nicht garantieren, es wird funktionieren, wie damals unter NT4.
EDIT: Nein, das ist nicht zur Arbeit gehen. Müssen Sie den code gefunden hier so erstellen Sie einen desktop, legen Sie die SID, etc.
STARTUPINFO
Struktur, wie der Benutzer das interaktiveWinSta0\Default
desktop (wie im Microsoft-Beispiel). Und Sie tun nicht wirklich brauchen, zu Durcheinander herum mit SIDs.CreateProcessAsUser()
im service arbeiten kann, ohne Sie in Ordnung. Ich habe mit it-Dienstleistungen seit Jahren ohne irgendein problem, und ich weiß nicht manipulieren SIDs. Auf der anderen Seite, die ich nicht verwendenLogonUser()
oderImpersonateLoggedOnUser()
verwende ichWTSQueryUserToken()
undDuplicateTokenEx()
statt.Außerdem sollten Sie nennen
CreateEnvironmentBlock()
vor dem AufrufCreateProcessAsUser()
als gut.Ich Stimme zu (etwas). Vielleicht sollten Sie schreiben eine neue Antwort. Es ist ein drei-Jahr-alte Antwort mit keine Abnahme und keine Stimmen zu, nach oben oder unten, so bin ich nur ungern zu verbringen mehr Zeit auf es jetzt.
Es gibt keine Notwendigkeit, die doppelte Benutzer-token, die über
WTSQueryUserToken
. Es gibt bereits Sie ein primäres tokenInformationsquelleAutor Carey Gregory
Ich weiß, dies ist eine alte post, aber ich bin zufällig auf diese hier ist ein bisschen code, das funktioniert für mich.
Bestimmen die Sitzungs-ID des aktuell angemeldeten Benutzers
Launch-Prozess als dem aktuell angemeldeten Benutzer
WTSActive
undWTS_CURRENT_SERVER
Die Dokumentation unter MSDN immer sagt Ihnen, welche header-Datei(en), die Sie brauchen, um #include und was .libs, müssen Sie diese Verbindung vor. Sorry, dass ist nicht in meinem post.
Kann ich imitieren angemeldeten Benutzer mit
WTSQueryUserToken
token ?Ich glaube, dass
ImpersonateLoggedOnUser
akzeptieren wird aus einem solchen token, ja. Ich schlage vor, Sie geben es zu gehen.InformationsquelleAutor Paul Sanders