2009-06-01 85 views
1

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

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服务已经“不采取任何行动”中的恢复选项。有没有一种方法可以通过编程方式改变它,以便在失败时重新启动?

回答

0

您可能可以使用sc命令来设置它。

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

这将告诉它0之后天(永远)的故障计数器复位,并与第二和后来的失败不采取行动的第一次失败30秒后重新启动。

0

进一步进行挖掘在MSDN - 这是特别不容易找到,但当PARAM dwInfoLevel是SERVICE_CONFIG_FAILURE_ACTIONS(2),则lpInfo看来

ChangeServiceConfig2http://msdn.microsoft.com/en-us/library/ms681988(VS.85).aspx

BOOL WINAPI ChangeServiceConfig2(
    __in  SC_HANDLE hService, 
    __in  DWORD dwInfoLevel, 
    __in_opt LPVOID lpInfo 
); 

参数是一个指向SERVICE_FAILURE_ACTIONS结构的指针。

SERVICE_FAILURE_ACTIONS结构 http://msdn.microsoft.com/en-us/library/ms685939(VS.85).aspx

如果你愿意,你可以配置“可选”服务设置。