繁体   English   中英

如何在Windows服务中显示启动错误消息?

[英]how to display startup error message in windows service?

因此,我想创建一个Windows服务,该服务在批处理文件中运行一些命令。

但是,尽管我假设我可以从子流程重定向stdout并读取错误消息,但似乎无法找出如何将其显示在屏幕上。

当启动Windows服务时,如果服务无法启动,它将给出错误,因此理想情况下,我只想使用弹出其他服务错误的界面,而不是弹出自己的某个窗口或编写日志文件。

我用它开始,但是似乎在错误处理上没有任何东西。

http://www.codeproject.com/Articles/499465/Simple-Windows-Service-in-Cplusplus

他只是输出到调试器。 我绝对可以做到这一点,但理想情况下,启动服务的人员将想知道启动是否存在错误。

是的,您可以重定向生成的进程的STDOUT。 MSDN上有关于该主题的文章:

创建具有重定向输入和输出的子进程

您可以使用ReportEvent()EventWrite()TraceEvent()将日志消息写入系统事件日志(位于Windows的“控制面板”中),具体取决于您决定使用哪种日志记录API。 有关更多详细信息,请参考MSDN:

事件记录

Windows事件日志

服务是一项后台任务,不应显示自己的UI。 使用系统事件查看器查看日志消息。 用户看到的如果服务无法启动的弹出窗口不是由服务本身显示,而是由服务控制管理器显示。

从Windows Vista开始,服务不会在与登录用户相同的桌面会话中运行( 会话0隔离 ),因此它们不再显示自己的UI。 如果您的服务必须显示弹出消息,则可以使用WTSSendMessage() 对于更复杂的UI,最好将其实现为在用户会话中运行的单独的非服务GUI应用程序,然后该服务可以根据需要启动/与该应用程序通信。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM