我怎样才能从服务中执行

时间:2010-08-23 13:29:24

标签: c++ windows service

我有一个窗口服务程序,我需要从它启动另一个可执行文件,但是没有这些函数在SvcMain中执行。我搜索了解决方案,但发现某处写了初始化应该在不到一秒钟内完成,否则它不会执行,所以我的createprocess失败了 他们说要为此工作,你需要将SetServiceStatus设置为service_start_pending,但我找不到任何文件来说明它。我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

尝试从SvcMain运行辅助线程,让该线程完成启动外部可执行文件的工作。

答案 1 :(得分:0)

基本上,它听起来很简单。在致电CreateProcess之前,请创建一个SERVICE_STATUS对象,将SERVICE_STATUS.dwCurrentState设置为SERVICE_START_PENDING,然后致电SetServiceStatus(handle_to_your_service, &the_service_status);

SERVICE_STATUS对象设为全局对象可能最简单。您将不止一次致电SetServiceStatus,并且大多数成员将随着时间的推移保持不变。例如。 .dwServiceType根本不应发生变化,而.dwControlsAccepted通常不会发生变化。