Winapi Windows服务查询

Winapi Windows服务查询,winapi,service,Winapi,Service,使用MSDN中描述的方法注册Windows服务(ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.WIN32COM.v10.en/dllproc/base/createservice.htm)并使用与所提供示例类似的代码: schService = CreateService( schSCManager, // SCManager database TEXT("Sample_Srv"), // name of s

使用MSDN中描述的方法注册Windows服务(ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.WIN32COM.v10.en/dllproc/base/createservice.htm)并使用与所提供示例类似的代码:

schService = CreateService( 
    schSCManager,              // SCManager database 
    TEXT("Sample_Srv"),        // name of service 
    lpszDisplayName,           // service name to display 
    SERVICE_ALL_ACCESS,        // desired access 
    SERVICE_WIN32_OWN_PROCESS, // service type 
    SERVICE_DEMAND_START,      // start type 
    SERVICE_ERROR_NORMAL,      // error control type 
    szPath,                    // path to service's binary 
    NULL,                      // no load ordering group 
    NULL,                      // no tag identifier 
    NULL,                      // no dependencies 
    NULL,                      // LocalSystem account 
    NULL);                     // no password 

我的问题是,尽管该服务已注册且工作正常,但在msconfig.msc中,该服务在恢复选项中具有“不采取任何操作”。是否有一种方法可以通过编程更改此设置,以便在出现故障时重新启动?

您可以使用
sc
命令设置此设置

sc failure "servicename" reset= 0 actions= restart/30000////

这将告诉它在0天后重置故障计数器(从不),并在第一次故障发生30秒后重新启动,而对第二次和以后的故障不采取任何措施。

您可以使用
sc
命令设置此设置

sc failure "servicename" reset= 0 actions= restart/30000////

这将告诉它在0天后重置故障计数器(从不),并在第一次故障发生30秒后重新启动,对第二次和以后的故障不采取任何措施。

查看如何设置这些类型的服务选项。

查看如何设置这些类型的服务选项。

在MSDN中执行了进一步的挖掘-虽然不太容易找到,但似乎很难找到

更改服务配置2()

当param dwInfoLevel是SERVICE_CONFIG_FAILURE_ACTIONS(2)时,lpInfo参数是指向SERVICE_FAILURE_ACTIONS结构的指针

服务\故障\动作结构


您可以在其中根据需要配置“可选”服务设置。

在MSDN中执行了进一步的挖掘-虽然不太容易找到,但它似乎

更改服务配置2()

当param dwInfoLevel是SERVICE_CONFIG_FAILURE_ACTIONS(2)时,lpInfo参数是指向SERVICE_FAILURE_ACTIONS结构的指针

服务\故障\动作结构

您可以根据需要配置“可选”服务设置