c# windows service

本文关键字:service windows | 更新日期: 2023-09-27 17:49:21

我有一个正在运行的windows服务。我想从windows服务监视c#控制台应用程序。我的c#控制台应用程序在控制台读取和写入一个和,乘法。我想使用我的windows服务打开和使用我的控制台应用程序。我应该写什么在OnStart()方法为了正确执行我的c#代码。

我确实把windows服务的exe文件(Process.start())从我的控制台应用程序代码,但我有错误:控制台应用程序停止工作。为什么?请帮帮我:)。我知道windows服务不能与GUI应用程序一起工作。但我只是想从我的windows服务打开另一个应用程序(我的exe,包含我的控制台应用程序)。THX

有人能给我一个小eq的工作吗?:)。Thx

c# windows service

不兼容Windows服务的不仅仅是GUI应用程序。控制台应用程序也有同样的问题。它们仍然作为用户模式进程运行,Windows服务无法访问。服务在称为会话0的完全隔离的进程空间中运行。他们不能访问任何用户帐户的桌面,也不能与运行在这些桌面上的应用程序交互。

除此之外,控制台应用程序仍然显示用户界面。屏幕上弹出的命令提示符窗口仍然有效,即使它不是图形化的。从Windows服务启动,它没有地方弹出。

这是Windows Vista及以后版本的安全特性。"启用服务与桌面交互"复选框不再工作了,从Windows XP开始就没有了。你也不应该在那里用它。隔离保护Windows服务免受源自应用程序代码的攻击。

就像我每次看到人们问这样的问题一样,你首先不清楚为什么需要使用Windows服务。更简单的选择是创建一个不显示任何表单的Windows应用程序,并在后台运行它。这创建了一个非常类似于Windows服务的效果,但没有你所经历的限制。因为它仍然在当前用户空间中运行,所以它可以启动和控制其他用户模式应用程序。

相关阅读:

  • 当Timer事件被触发时,Windows服务如何启动进程?
  • 如何使用c#从Windows服务运行EXE程序?
  • windows服务(允许服务与桌面交互)
  • 需要用不可见的WinForm应用程序替换Windows Service的建议

您的控制台应用程序记录任何错误吗?也许可以试着检查错误日志,看看是什么导致了主机应用程序的问题。这个问题可能会引导你找到答案/修复:

避免程序在c#中停止工作

你的问题有一些问题,正如你提到的,大多数windows服务器阻止服务直接访问GUI,以及服务作为用户的自己的实例运行,而不是任何一个登录。因此,访问用户运行的应用程序即使不是不可能,也是很困难的(就像它不能看到您的用户目录一样)

更可行的是反过来。

如果你有一个服务,你的控制台应用程序希望与之交互,它可以宣布它的到来,然后在连接时服务可以回复指令,让你的控制台应用程序执行。但是,您需要设计一种结构化的方法来实现这一点。