[转]C++实现系统服务暂停、停止、启动
- /*
- 名称:系统服务管理
- 语言:C++
- 介绍:对Windows系统服务的状态获取,服务暂停,开启,停止操作代码
- */
- void CStartServiceDlg::OnBnClickedButton1()
- {
- // 打开服务管理对象
- SC_HANDLE hSC = ::OpenSCManager( NULL,
- NULL, GENERIC_EXECUTE);
- if( hSC == NULL)
- {
- TRACE( "open SCManager error");
- return;
- }
- // 打开www服务。
- SC_HANDLE hSvc = ::OpenService( hSC, "W3SVC",
- SERVICE_START | SERVICE_QUERY_STATUS | SERVICE_STOP);
- if( hSvc == NULL)
- {
- TRACE( "Open www erron。");
- ::CloseServiceHandle( hSC);
- return;
- }
- // 获得服务的状态
- SERVICE_STATUS status;
- if( ::QueryServiceStatus( hSvc, &status) == FALSE)
- {
- TRACE( "Get Service state error。");
- ::CloseServiceHandle( hSvc);
- ::CloseServiceHandle( hSC);
- return;
- }
- //如果处于停止状态则启动服务,否则停止服务。
- if( status.dwCurrentState == SERVICE_RUNNING)
- {
- // 停止服务
- if( ::ControlService( hSvc,
- SERVICE_CONTROL_STOP, &status) == FALSE)
- {
- TRACE( "stop service error。");
- ::CloseServiceHandle( hSvc);
- ::CloseServiceHandle( hSC);
- return;
- }
- // 等待服务停止
- while( ::QueryServiceStatus( hSvc, &status) == TRUE)
- {
- ::Sleep( status.dwWaitHint);
- if( status.dwCurrentState == SERVICE_STOPPED)
- {
- AfxMessageBox( "stop success。");
- ::CloseServiceHandle( hSvc);
- ::CloseServiceHandle( hSC);
- return;
- }
- }
- }
- else if( status.dwCurrentState == SERVICE_STOPPED)
- {
- // 启动服务
- if( ::StartService( hSvc, NULL, NULL) == FALSE)
- {
- TRACE( "start service error。");
- ::CloseServiceHandle( hSvc);
- ::CloseServiceHandle( hSC);
- return;
- }
- // 等待服务启动
- while( ::QueryServiceStatus( hSvc, &status) == TRUE)
- {
- ::Sleep( status.dwWaitHint);
- if( status.dwCurrentState == SERVICE_RUNNING)
- {
- AfxMessageBox( "start success。");
- ::CloseServiceHandle( hSvc);
- ::CloseServiceHandle( hSC);
- return;
- }
- }
- }
- TRACE( "start error。");
- ::CloseServiceHandle( hSvc);
- ::CloseServiceHandle( hSC);
- return;
- }
[转]C++实现系统服务暂停、停止、启动的更多相关文章
- iOS 9音频应用播放音频之播放控制暂停停止前进后退的设置
iOS 9音频应用播放音频之播放控制暂停停止前进后退的设置 ios9音频应用播放控制 在“iOS 9音频应用播放音频之ios9音频基本功能”一文可以看到AVAudioPlayer类有很多的属性以及方法 ...
- 添加Nginx为系统服务(设置开机启动)
在本节中,我们将创建一个脚本,将Nginx守护进程转换为实际的系统服务. 这有两个作用:守护程序可以使用标准命令控制,更重要的是,它可以在系统启动时自动启动,并在系统关闭时停止. System V s ...
- C#管理服务停止启动
由于机器性能问题,把许多服务关闭了,需要用的时候再开启,这样每次都打开服务管理或cmd命令比较麻烦.就自己写了工具显示在桌面上; 声明:ServiceController myController = ...
- Scrapy爬虫的暂停和启动
scrapy的每一个爬虫,暂停时可以记录暂停状态以及爬取了哪些url,重启时可以从暂停状态开始爬取过的URL不在爬取 实现暂停与重启记录状态 方法一: 1.首先cd进入到scrapy项目里(当然你也可 ...
- FreeRTOS任务暂停和启动函数
任务句柄 TaskHandle_t pump_task_handle = NULL; 任务的启动函数 if(eTaskGetState(pump_task_handle) != eRunning) v ...
- QThread 线程暂停 停止功能的实现
为了实现Qt中线程的暂停运行,和停止运行的控制功能 需要在设置两个static型控制变量. //终止原始数据单元进队出队,并清空数据. static bool stopSign; //原始数据单元队列 ...
- 一个简单的dos脚本, svn 获取代码 - Tomcat 备份 - Maven 编译 - 停止/启动Tomcat - Tomcat站点 发布
获取最新代码 svn update --username %SVN_USER% --password %SVN_PASSWORD% >> "../%LOG_FILE%" ...
- ElasticSearch停止启动
1.查找ES进程 ps -ef | grep elastic 2.杀掉ES进程 kill -9 2382(进程号) 3.重启ES sh elasticsearch -d 注意:elasticsearc ...
- 分享Win7 将svn增加系统服务并成功启动的方法
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/default7/article/details/32728717 依照网上搜索到的方法,结果一直提示 ...
随机推荐
- Struts2中的校验框架
Struts2提供的客户端校验 尽管这种支持比较弱,但采用Struts2中的客户端校验时需要注意以下几点 1..将<s:form validate="true">的va ...
- Java线程状态:BLOCKED与WAITING的区别
Doc说明: /** * Thread state for a thread blocked waiting for a monitor lock. * A thread in the blocked ...
- Python学习笔记5(字符串与正则表达式)
1.字符串 1.1字符串的格式化 #格式化语法 "%s" % str1 "%s %s" % (str1,str2) #格式化字符串 str1 = "v ...
- 磁盘管理二-LVM相关内容
1.基本概念 LVM:logical volume manager 逻辑卷管理器 LVM构成:物理卷PV,卷组VG(PE物理区域,最小存储单元),逻辑卷LV(LE逻辑区域,最小存储单元) 三者如下图所 ...
- Ucenter注册后,需要二次登录才能同步登录的解决方案
1. 打开配置文件config.inc.php 在根目录data目录下最下方定义 define('DZ_DBTABLEPRE', '你的表前缀'); 2.打开uc_server/model/user. ...
- JSON数据解析——jsoncpp的使用
版权所有,转载请注明:http://blog.sina.com.cn/u/1978765352 由于工作中需要用到JSON数据,所以解析JSON数据就成了一个非常重要的工作内容. 其实用C++解析数据 ...
- codecomb 2090【最小乘积路】
题目描述 给定n个点的带权有向图,求从1到n的路径中边权之积最小的简单路径. 输入格式 第一行读入两个整数n,m,表示共n个点m条边. 接下来m行,每行三个正整数x,y,z,表示点x到点y有一条边权为 ...
- 在 ASP.NET MVC 项目中使用 WebForm、 HTML
原文地址:http://www.cnblogs.com/snowdream/archive/2009/04/17/winforms-in-mvc.html ASP.NET MVC和WebForm各有各 ...
- Python IDE的选择和安装
安装好Python后我们需要选择合适自己的IDE进行学习,虽然利用python默认的编辑器,或者直接文档编辑也可以进行基础的学习,但总归不是太方便,能够开发python项目的IDE很多,如sublim ...
- ubuntu查看硬件信息
1,外部探针probe sudo apt-get install hwinfo 执行hwinfo获取系统信息 --short