Maison >développement back-end >C++ >Comment un service Windows peut-il exécuter des fichiers EXE externes ?
Exécuter des programmes EXE à partir des services Windows en C#
L'exécution de programmes EXE à partir des services Windows à l'aide de C# nécessite une attention particulière en raison des limitations inhérentes.
Énoncé du problème
Tentatives de le lancement de programmes EXE à l'aide de System.Diagnostics.Process.Start() à partir d'un service Windows peut échouer. Le code fourni dans la question illustre ce problème :
System.Diagnostics.Process.Start(@"E:\PROJECT XL\INI SQLLOADER\ConsoleApplication2\ConsoleApplication2\ConsoleApplication2\bin\Debug\ConsoleApplication2.exe");
Explication du problème
Les services Windows fonctionnent dans une session isolée, les empêchant d'interagir avec les utilisateurs ou le bureau. Cette restriction leur interdit d'exécuter des applications qui nécessitent une interaction de l'utilisateur ou un accès au bureau.
Considérations
Solutions
1. Utiliser une application Windows standard :
Migrez l'exécution du code vers une application Windows standard (par exemple Windows Forms, WPF, Console). Cela permet à l'application de s'exécuter dans le contexte de l'utilisateur actuel et d'interagir avec le bureau.
2. Supprimer la création de fenêtre :
Modifiez le code de l'application Console pour supprimer la création d'une fenêtre Console. Ceci peut être réalisé en ajoutant CreateNoWindow aux options ProcessStartInfo :
ProcessStartInfo psi = new ProcessStartInfo() { FileName = @"E:\PROJECT XL\INI SQLLOADER\ConsoleApplication2\ConsoleApplication2\ConsoleApplication2\bin\Debug\ConsoleApplication2.exe", CreateNoWindow = true }; System.Diagnostics.Process.Start(psi);
Ressources supplémentaires :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!