如何在 windows 服务中显示启动错误消息?
how to display startup error message in windows service?
所以我想创建一个 windows 服务,在批处理文件中运行一些命令。
然而,虽然我假设我可以从子进程重定向 stdout 并读出错误消息,但我似乎无法找到如何将其显示到屏幕上。
当启动一个windows服务时,它会在服务启动失败时给出错误,所以理想情况下我只想使用弹出其他服务错误的界面而不是弹出一些window 我自己的或写一个日志文件。
我用它来开始,但它似乎没有任何关于错误处理的内容。
http://www.codeproject.com/Articles/499465/Simple-Windows-Service-in-Cplusplus
他只是输出到调试器。我绝对可以做到这一点,但理想情况下,启动服务的人会想知道启动是否有错误。
是的,您可以重定向生成进程的 STDOUT。 MSDN 有一篇关于该主题的文章:
Creating a Child Process with Redirected Input and Output
您可以使用 ReportEvent()
, EventWrite()
, or TraceEvent()
将日志消息写入系统事件日志(位于 Windows' 控制面板内),具体取决于您决定使用的日志 API .有关详细信息,请参阅 MSDN:
服务是后台任务,它不应显示自己的 UI。使用系统事件查看器查看日志消息。如果服务启动失败,用户看到的弹出窗口不是由服务本身显示的,而是由服务控制管理器显示的。
从 Windows Vista 开始,服务不会 运行 在与登录用户相同的桌面会话中(Session 0 Isolation),因此它们不能展示自己的UI了。如果您的服务必须显示弹出消息,它可以使用 WTSSendMessage()
。对于更复杂的 UIs,最好将其实现为单独的非服务 GUI 应用程序,在用户会话中 运行s,然后服务可以 launch/communicate 根据需要使用该应用程序。
所以我想创建一个 windows 服务,在批处理文件中运行一些命令。
然而,虽然我假设我可以从子进程重定向 stdout 并读出错误消息,但我似乎无法找到如何将其显示到屏幕上。
当启动一个windows服务时,它会在服务启动失败时给出错误,所以理想情况下我只想使用弹出其他服务错误的界面而不是弹出一些window 我自己的或写一个日志文件。
我用它来开始,但它似乎没有任何关于错误处理的内容。
http://www.codeproject.com/Articles/499465/Simple-Windows-Service-in-Cplusplus
他只是输出到调试器。我绝对可以做到这一点,但理想情况下,启动服务的人会想知道启动是否有错误。
是的,您可以重定向生成进程的 STDOUT。 MSDN 有一篇关于该主题的文章:
Creating a Child Process with Redirected Input and Output
您可以使用 ReportEvent()
, EventWrite()
, or TraceEvent()
将日志消息写入系统事件日志(位于 Windows' 控制面板内),具体取决于您决定使用的日志 API .有关详细信息,请参阅 MSDN:
服务是后台任务,它不应显示自己的 UI。使用系统事件查看器查看日志消息。如果服务启动失败,用户看到的弹出窗口不是由服务本身显示的,而是由服务控制管理器显示的。
从 Windows Vista 开始,服务不会 运行 在与登录用户相同的桌面会话中(Session 0 Isolation),因此它们不能展示自己的UI了。如果您的服务必须显示弹出消息,它可以使用 WTSSendMessage()
。对于更复杂的 UIs,最好将其实现为单独的非服务 GUI 应用程序,在用户会话中 运行s,然后服务可以 launch/communicate 根据需要使用该应用程序。