Ausführen von EXE-Programmen aus Windows-Diensten in C#
Das Ausführen von EXE-Programmen aus Windows-Diensten mit C# erfordert aufgrund inhärenter Einschränkungen sorgfältige Überlegungen.
Problemstellung
Versuche dazu Das Starten von EXE-Programmen mit System.Diagnostics.Process.Start() von einem Windows-Dienst kann fehlschlagen. Der in der Frage bereitgestellte Code veranschaulicht dieses Problem:
System.Diagnostics.Process.Start(@"E:\PROJECT XL\INI SQLLOADER\ConsoleApplication2\ConsoleApplication2\ConsoleApplication2\bin\Debug\ConsoleApplication2.exe");
Erläuterung des Problems
Windows-Dienste werden in einer isolierten Sitzung ausgeführt und verhindern so die Interaktion mit Benutzern oder Der Desktop. Diese Einschränkung verhindert, dass sie Anwendungen ausführen, die eine Benutzerinteraktion oder Zugriff auf den Desktop erfordern.
Überlegungen
Lösungen
1. Verwenden Sie eine Standard-Windows-Anwendung:
Migrieren Sie die Codeausführung in eine Standard-Windows-Anwendung (z. B. Windows Forms, WPF, Konsole). Dadurch kann die Anwendung im Kontext des aktuellen Benutzers ausgeführt werden und mit dem Desktop interagieren.
2. Fenstererstellung unterdrücken:
Ändern Sie den Code der Konsolenanwendung, um die Erstellung eines Konsolenfensters zu unterdrücken. Dies kann durch Hinzufügen von CreateNoWindow zu den ProcessStartInfo-Optionen erreicht werden:
ProcessStartInfo psi = new ProcessStartInfo() { FileName = @"E:\PROJECT XL\INI SQLLOADER\ConsoleApplication2\ConsoleApplication2\ConsoleApplication2\bin\Debug\ConsoleApplication2.exe", CreateNoWindow = true }; System.Diagnostics.Process.Start(psi);
Zusätzliche Ressourcen:
Das obige ist der detaillierte Inhalt vonWie kann ein Windows-Dienst externe EXE-Dateien ausführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!