如何在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应用程序,然后服务可以根据需要启动该应用程序/与该应用程序通信。
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 字符串-C++后显示的随机字符
- 继承期间显示未知行为的子类
- 仅使用绝对值对数组进行排序,并在C++中显示实际值
- 如何创建一个空的全局类并在启动时实例化它
- 编写一个递归功能,该功能采用数组并以相反顺序显示元素,而无需在末尾启动数组的索引
- 启动时不显示 Direct2D DC 上下文呈现的图像
- 强制将以SW_HIDE启动的进程中的窗口显示为STARTUPINFO
- Qt:缓慢启动时显示窗口内容
- 从 MFC 应用程序启动 Java 时,在 MFC 应用程序中显示等待光标,直到它完成其进程
- 如何在windows服务中显示启动错误消息
- 邮件程序启动时如何快速显示邮件列表
- 虽然循环未启动显示 5,但从输入开始,C++
- 在首次向用户显示表单之前,应用程序不会启动
- 从命令行启动时,在for循环期间不显示C++cout语句
- Qt应用程序启动但不显示
- Android应用程序无法在Nexus 7上启动(显示黑屏)
- 是否可以在不显示窗口的情况下启动命令行应用程序
- 为什么OSX活动监视器不显示我启动的进程?