2009-06-01 56 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

如果你願意,你可以配置「可選」服務設置。