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
Wie kann ich aus einem Dienst ein Programm (visuell) öffnen?
Nesso
myCSharp.de - Member

Avatar #avatar-3159.jpg


Dabei seit:
Beiträge: 18

Themenstarter:

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

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
dannoe
myCSharp.de - Member



Dabei seit:
Beiträge: 151

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15618
Herkunft: BW

beantworten | zitieren | melden

Windows Services haben - anders als Konsolenanwendungen - keinen Shell/UI Zugriff und können daher entsprechende Anwendungen auch nicht starten, die selbige benötigen.
private Nachricht | Beiträge des Benutzers
Nesso
myCSharp.de - Member

Avatar #avatar-3159.jpg


Dabei seit:
Beiträge: 18

Themenstarter:

beantworten | zitieren | melden

Hallo Leute,

vielen Dank, die MSDN Artikeln waren für mich sehr hilfreich!
private Nachricht | Beiträge des Benutzers