Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Dienst - CreateProcessAsUser als lokaler Admin in einer Benutzersitzung
niceGuy
myCSharp.de - Member



Dabei seit:
Beiträge: 8

Themenstarter:

Dienst - CreateProcessAsUser als lokaler Admin in einer Benutzersitzung

beantworten | zitieren | melden

Hallo zusammen,

Situation
Ein Windows Dienst läuft als SYSTEM im Hintergrund.
Der Dienst soll in einer aktiven Benutzersitzung eine Applikation starten.
Diese Applikation soll mit den Rechten eines dritten Benutzers gestartet werden.

Beteiligte
SYSTEM: Der Dienst ist standardmässig installiert ohne jegliche Spezialkonfiguration
Benutzer A: Angemeldet mit einer eigenen Windows Sitzung. Seine SessionID wird verwendet um darin eine Applikation unter dem Benutzer B zu starten.
Benutzer B: Wird mit

LogonUser
an Windows angemeldet. Sein Token wird dann für

CreateProcessAsUser
verwendet.

Aktueller Stand
Ich habe eine Funktion geschrieben welche eine Applikation in der Benutzersitzung starten kann.
Diese erwartet Parameter wie: applicationName, commandline und die impersonation Informationen.

Was läuft?
Der Start einer Applikation aus einem Dienst heraus in eine laufende Benutzersitzung. Die Applikation läuft unter dem SYSTEM Konto oder unter dem gleichen Konto wie der angemeldete Benutzer.

Was geht nicht?
Der Start einer Applikation aus einem Dienst heraus in eine laufende Benutzersitzung. Die Applikation läuft unter einem weiteren Benutzerkonto.

Der aktuelle Code liegt im Anhang.

Vielen Dank für Eure Hilfe!
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von niceGuy am .
Attachments
private Nachricht | Beiträge des Benutzers
niceGuy
myCSharp.de - Member



Dabei seit:
Beiträge: 8

Themenstarter:

So wird der Code aufgerufen

beantworten | zitieren | melden


// = Prepare callback
helper.AppLauncher.PROCESS_INFORMATION procInfo;

// = Prepare impersonation
helper.AppLauncher.ImpersonationInfo impersonationInfo = new helper.AppLauncher.ImpersonationInfo();

// = 2: Start a process as specified user
impersonationInfo.LogonType = 2;        // Service = 0, CurrentUser = 1, LogonUser = [2]
impersonationInfo.LogonName = "derLokaleBenutzermitAdminrechten";
impersonationInfo.LogonPassword = "meinGeheimesP@sswort";
helper.AppLauncher.StartProcessInCurrentUserSession("cmd.exe", null, true, impersonationInfo, out procInfo);

Wenn ich das so ausführe, dann erhalte ich eine gestartete CMD.exe aber diese kann nicht bedient werden:
--> Siehe Screenshot
Attachments
private Nachricht | Beiträge des Benutzers