c# - 如何使用 C# 从 Windows 服务运行 EXE 程序?

标签 c# .net windows windows-services process.start

如何使用 C# 从 Windows 服务运行 EXE 程序?

这是我的代码:

System.Diagnostics.Process.Start(@"E:\PROJECT XL\INI SQLLOADER\ConsoleApplication2\ConsoleApplication2\ConsoleApplication2\bin\Debug\ConsoleApplication2.exe");

当我运行这个服务时,应用程序没有启动。
我的代码有什么问题?

最佳答案

这永远行不通,至少在 Windows Vista 或更高版本下行不通。关键问题是您试图从 Windows 服务而不是标准 Windows 应用程序中执行此操作。您显示的代码可以在 Windows 窗体、WPF 或控制台应用程序中完美运行,但在 Windows 服务中根本无法运行。

Windows 服务无法启动其他应用程序,因为它们未在任何特定用户的上下文中运行。与常规 Windows 应用程序不同,services are now run in an isolated session并禁止与用户或桌面交互。这样就没有地方可以运行应用程序了。

这些相关问题的答案中提供了更多信息:

您现在可能已经想到,解决问题的最佳方法是创建标准的 Windows 应用程序而不是服务。它们旨在由特定用户运行并与该用户的桌面相关联。这样,您可以随时使用已经显示的代码运行其他应用程序。

另一种可能的解决方案,假设您的控制台应用程序不需要任何类型的界面或输出,是指示进程不要创建窗口。这将防止 Windows 阻止创建您的进程,因为它将不再请求创建控制台窗口。您可以在this answer中找到相关代码一个相关的问题。

关于c# - 如何使用 C# 从 Windows 服务运行 EXE 程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5307968/

相关文章:

c# - 如何使用mshtml在textarea中输入文本

c# - 使用自定义对象的分层数据 (telerik RadGridView)

c# - 有没有办法在另一种形式上显示一种形式的一部分?

c# - gitlab CI 运行器 C# 依赖项在 MSbuild 中全部失败

c# - 将 winapi 事件转发到另一个窗口

java - Windows 路径变量中 Java 的 "bin"目录混淆 - 如何解决此问题?

C# 覆盖公共(public)成员并将其设为私有(private)

.net - .Net 是否有 dtrace 等效项

C# PrintDocument 更改事件

java - 将 Runtime.exec 与 "Program Files"一起使用的正确语法