Laden...

Programm nicht sichtbar, wenn von einem Dienst gestartet

Erstellt von Ralf2022 vor einem Jahr Letzter Beitrag vor einem Jahr 186 Views
R
Ralf2022 Themenstarter:in
12 Beiträge seit 2022
vor einem Jahr
Programm nicht sichtbar, wenn von einem Dienst gestartet

Hallo liebes Forum,

ich habe einen Windows-Service programmiert, der überwacht, ob ein bestimmtes Programm läuft. Wenn nicht, wird dieses wieder gestartet (mittels Process.Start).
Funktioniert soweit. Jedoch wird das vom Dienst gestartete Programm nur im Hintergrund ausgeführt, das UI ist nicht sichtbar und auch in der Taskleiste nicht vorhanden. Im Taskmanager ist es aber als aktiv zu sehen, im Logfile ist auch zu erkennen, dass es arbeitet.
Ich habe den Dienst wahlweise als System, Lokal und User registriert, ohne Unterschied.
Wie kann man das denn ändern?

Vielen Dank und viele Grüße,
Ralf

16.835 Beiträge seit 2008
vor einem Jahr

Damit eine Anwendung für einen User sichtbar wird (und damit mit den Berechtigungen des Users läuft), muss dieses auch durch den User selbst mit dessen User Context (und Desktop Context) gestartet werden.
Wenn ein Windows Service dies ohne weiteres könnte, wäre dies eine Sicherheitslücke. Daher geht das mit den Änderungen des neuen User Access Controls seit Windows Vista (ohne weiteres*) nicht mehr.
Das Verhalten, das Du erlebst, ist daher absolut korrekt.

Du kannst daher kein Windows Service für diese Anforderung verwenden, sondern müsstest eine Tray Application verwenden, die selbst durch den Benutzer gestartet wird.

*man kann das aushebeln, is nicht zu empfehlen.
Wenn man es trotzdem tun will: dazu muss man die Win32 API (advapi32.dll CreateProcessAsUser) ansprechen. In .NET ist das nicht gewrappt, auch nicht in der Process Klasse.

R
Ralf2022 Themenstarter:in
12 Beiträge seit 2022
vor einem Jahr

Hallo Abt,

danke für die Info. Da war ich also auf dem falschen Weg. Danke für den Hinweis, ich werde mal nachlesen, wie man TrayApps erstellt.

Gruß Ralf