在整个执行生命周期中如何查看服务的控制台 window?

How see console window of a service during your full execution lifetime?

可能这已经在这里得到解答,但我没有找到。

然后我想知道如何执行一个 c++ 控制台应用程序/服务(将自身安装为服务)我可以看到所有在执行期间输出 (printf())(类似于在 main() 中使用 system("pause"); 时在普通控制台应用程序中发生的情况)?直到现在,我只能在 Avast DeepScreen 执行时看到您控制台 window :-).

提前致谢。


版本:

我已经在 ServiceMain()while (true) ... Sleep() 中插入了 getchar(); 但没有成功。

好吧,以使用 C++ 程序执行任何程序为例,您只需使用命令提示符即可。 只需输入:

    system(“path to the program”);

并且,程序将被执行。如果是控制台window程序,就会弹出。 你可以看到输出,好吧,按照这些: 1 System.Diagnostics.Trace class 具有与控制台 class 类似的界面,因此您可以很容易地将代码迁移到此。 2 然后可以将其配置为输出到文件。您可以使用 System.Diagnostics.EventLog class 写入事件日志,然后您可以使用事件查看器对其进行监控。 3 可以使用第三方开源的log4net库,非常灵活

服务没有控制台window。即使有,服务也不会在交互式桌面中 运行,因此无论如何您都看不到这样的 window。

您需要重新考虑您的日志记录方法。要么

  • 将日志消息写入 Windows 事件日志,并使用 Windows 事件查看器查看消息。

  • 创建一个单独的可视化应用程序,运行它位于用户的交互式桌面中,并与服务进程通信以接收日志消息。然后您可以根据需要显示消息。