MFC/VC下控制windows服务——停止服务,启动服务

Posted 我是黄老邪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC/VC下控制windows服务——停止服务,启动服务相关的知识,希望对你有一定的参考价值。

操作系统: Windows7 64位(经测试,Windows10不能用)

运行环境: 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++启动和停止服务【转】

以上是关于MFC/VC下控制windows服务——停止服务,启动服务的主要内容,如果未能解决你的问题,请参考以下文章

在 MFC VC++ 中未捕获 MouseWheel 事件

Win32控制台应用程序怎样使用MFC中的CFile类?

Linux下, 启动、重启、停止, 服务的命令是多少?

windows下彻底卸载mysql

Windows10系统下,彻底删除卸载MySQL

WINDOWS 服务主进程已停止工作?