MFC/VC下制御windowsサービス——サービスを停止し、サービスを起動する

1412 ワード

OS:Windows 7 64ビット(テスト済み、Windows 10は使用できません)
実行環境:Visual Studio 10
ファイルコード:Unicode
追加するヘッダファイル:
#include <winsvc.h>
void CXXXDlg::ServiceRun()   
{   
	SERVICE_STATUS ssStatus; 

	// ServiceControl Manager    
	SC_HANDLE shServiceManager = OpenSCManager(NULL,SERVICES_ACTIVE_DATABASE,SC_MANAGER_ALL_ACCESS);   

	//    
	SC_HANDLE shDefineService = OpenService(shServiceManager,_T("Tomcat8"),SERVICE_ALL_ACCESS);   

	if((QueryServiceStatus(shDefineService,&ssStatus))==0)  
	{
		AfxMessageBox(_T(" "),MB_ICONINFORMATION);
	}
		  	
	// ,    
	SC_HANDLE stService;   
	if(ssStatus.dwCurrentState==SERVICE_STOPPED)   
	{   
		//AfxMessageBox(" Tomcat8 ",MB_ICONINFORMATION);   
		stService = OpenService(shServiceManager,_T("Tomcat8"),SERVICE_START|GENERIC_EXECUTE);   
		StartService(stService,0,NULL);   
		CloseServiceHandle(stService);   
	}   
	//else  // 
	//{   
	//	//AfxMessageBox(" Tomcat8 ",MB_ICONINFORMATION);   
	//	stService=OpenService(shServiceManager,"Tomcat8",SERVICE_STOP|GENERIC_EXECUTE);   
	//	ControlService(stService,SERVICE_CONTROL_STOP,&ssStatus);   
	//	CloseServiceHandle(stService);   
	//}   
	CloseServiceHandle(shDefineService);   
	CloseServiceHandle(shServiceManager);    
} 

参考記事:
C++インストール、削除、起動サービス
vc++起動と停止サービス【回転】