Laden...

Wie kann ich aus einem Dienst ein Programm (visuell) öffnen?

Erstellt von Nesso vor 3 Jahren Letzter Beitrag vor 3 Jahren 848 Views
Nesso Themenstarter:in
18 Beiträge seit 2010
vor 3 Jahren
Wie kann ich aus einem Dienst ein Programm (visuell) öffnen?

Hallo Liebe myC# Freunde,

folgendens plagt mich beim aufrufen einer DLL übern einen Dienst...

Szenario: Über einen Dienst wird eine DLL eingebunden (ist auch registriert) auf einem Windows Server (2012) (Testumgebung).
Diese DLL ruft eine beliebige Anwendung auf, als Beispiel nehmen wir Notepad.exe, die ich mit System.Diagnostic.Process.Start aufrufe

Wird die DLL über den Dienst ausgeführt, sehe ich Notepad nur als Hintergrundprozess. Erwartet hätte ich, das der Editor aufgeht.

Packe in den gleichen Code in einer Konsolenanwendung zum testen und starte die EXE, funktioniert das einwandfrei.

Daraufhin kam mir die Idee, dass ich eventuell Parametern von System.Diagnostics.ProcessStartInfo übergeben muss.
Habe das im unterem Code ausgeführt, an welche ich mich bedient habe aus meinen Recherchen.

Leider bekam ich nicht den gewünschten Effekt zurück und ich sehe Notepad nur im Hintergrundprozess.
Vll kann mir jemand diesen Verhalten erklären, da ich gerade nicht schlau davon werde.
Kann es sein, das ich irgendwelche Parameter vergessen habe?

Hier mein Code:


var ssPwd = new SecureString();
                string password = "meinPW!";
                for (int x = 0; x < password.Length; x++)
                {
                    ssPwd.AppendChar(password[x]);
                }
                using (Process process1 = new Process())
                {
                    process1.StartInfo = new ProcessStartInfo(@"C:\Windows\system32\notepad.exe");
                    process1.StartInfo.CreateNoWindow = true;
                    process1.StartInfo.ErrorDialog = false;
                    process1.StartInfo.RedirectStandardError = true;
                    process1.StartInfo.RedirectStandardInput = true;
                    process1.StartInfo.RedirectStandardOutput = true;
                    process1.StartInfo.UseShellExecute = false;
                    process1.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
                    process1.StartInfo.UserName = Environment.UserName;
                    process1.StartInfo.Password = ssPwd;
                    process1.StartInfo.Domain = Environment.UserDomainName;
                    process1.Start();
                    process1.WaitForExit();
                }


Ich hoffe, das Forum ist richtig gewählt und ich habe die Forumssuche richtig bedient X(
Liebe Grüße

D
261 Beiträge seit 2015
vor 3 Jahren

Per Dienst gestartete Anwendungen haben im Normalfall nicht die Möglichkeit mit dem Desktop zu interagieren (und sollten sie auch nicht).
Warum? => Interacting with Services | Microsoft Docs und Interactive Services - Win32 apps | Microsoft Docs

16.806 Beiträge seit 2008
vor 3 Jahren

Windows Services haben - anders als Konsolenanwendungen - keinen Shell/UI Zugriff und können daher entsprechende Anwendungen auch nicht starten, die selbige benötigen.

Nesso Themenstarter:in
18 Beiträge seit 2010
vor 3 Jahren

Hallo Leute,

vielen Dank, die MSDN Artikeln waren für mich sehr hilfreich! 👍 👍