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
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
Windows Services haben - anders als Konsolenanwendungen - keinen Shell/UI Zugriff und können daher entsprechende Anwendungen auch nicht starten, die selbige benötigen.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hallo Leute,
vielen Dank, die MSDN Artikeln waren für mich sehr hilfreich! 👍 👍