1. /*
  2. 名称:系统服务管理
  3. 语言:C++
  4. 介绍:对Windows系统服务的状态获取,服务暂停,开启,停止操作代码
  5. */
  6. void CStartServiceDlg::OnBnClickedButton1()
  7. {
  8. // 打开服务管理对象
  9. SC_HANDLE hSC = ::OpenSCManager( NULL,
  10. NULL, GENERIC_EXECUTE);
  11. if( hSC == NULL)
  12. {
  13. TRACE( "open SCManager error");
  14. return;
  15. }
  16. // 打开www服务。
  17. SC_HANDLE hSvc = ::OpenService( hSC, "W3SVC",
  18. SERVICE_START | SERVICE_QUERY_STATUS | SERVICE_STOP);
  19. if( hSvc == NULL)
  20. {
  21. TRACE( "Open www erron。");
  22. ::CloseServiceHandle( hSC);
  23. return;
  24. }
  25. // 获得服务的状态
  26. SERVICE_STATUS status;
  27. if( ::QueryServiceStatus( hSvc, &status) == FALSE)
  28. {
  29. TRACE( "Get Service state error。");
  30. ::CloseServiceHandle( hSvc);
  31. ::CloseServiceHandle( hSC);
  32. return;
  33. }
  34. //如果处于停止状态则启动服务,否则停止服务。
  35. if( status.dwCurrentState == SERVICE_RUNNING)
  36. {
  37. // 停止服务
  38. if( ::ControlService( hSvc,
  39. SERVICE_CONTROL_STOP, &status) == FALSE)
  40. {
  41. TRACE( "stop service error。");
  42. ::CloseServiceHandle( hSvc);
  43. ::CloseServiceHandle( hSC);
  44. return;
  45. }
  46. // 等待服务停止
  47. while( ::QueryServiceStatus( hSvc, &status) == TRUE)
  48. {
  49. ::Sleep( status.dwWaitHint);
  50. if( status.dwCurrentState == SERVICE_STOPPED)
  51. {
  52. AfxMessageBox( "stop success。");
  53. ::CloseServiceHandle( hSvc);
  54. ::CloseServiceHandle( hSC);
  55. return;
  56. }
  57. }
  58. }
  59. else if( status.dwCurrentState == SERVICE_STOPPED)
  60. {
  61. // 启动服务
  62. if( ::StartService( hSvc, NULL, NULL) == FALSE)
  63. {
  64. TRACE( "start service error。");
  65. ::CloseServiceHandle( hSvc);
  66. ::CloseServiceHandle( hSC);
  67. return;
  68. }
  69. // 等待服务启动
  70. while( ::QueryServiceStatus( hSvc, &status) == TRUE)
  71. {
  72. ::Sleep( status.dwWaitHint);
  73. if( status.dwCurrentState == SERVICE_RUNNING)
  74. {
  75. AfxMessageBox( "start success。");
  76. ::CloseServiceHandle( hSvc);
  77. ::CloseServiceHandle( hSC);
  78. return;
  79. }
  80. }
  81. }
  82. TRACE( "start error。");
  83. ::CloseServiceHandle( hSvc);
  84. ::CloseServiceHandle( hSC);
  85. return;
  86. }

[转]C++实现系统服务暂停、停止、启动的更多相关文章

  1. iOS 9音频应用播放音频之播放控制暂停停止前进后退的设置

    iOS 9音频应用播放音频之播放控制暂停停止前进后退的设置 ios9音频应用播放控制 在“iOS 9音频应用播放音频之ios9音频基本功能”一文可以看到AVAudioPlayer类有很多的属性以及方法 ...

  2. 添加Nginx为系统服务(设置开机启动)

    在本节中,我们将创建一个脚本,将Nginx守护进程转换为实际的系统服务. 这有两个作用:守护程序可以使用标准命令控制,更重要的是,它可以在系统启动时自动启动,并在系统关闭时停止. System V s ...

  3. C#管理服务停止启动

    由于机器性能问题,把许多服务关闭了,需要用的时候再开启,这样每次都打开服务管理或cmd命令比较麻烦.就自己写了工具显示在桌面上; 声明:ServiceController myController = ...

  4. Scrapy爬虫的暂停和启动

    scrapy的每一个爬虫,暂停时可以记录暂停状态以及爬取了哪些url,重启时可以从暂停状态开始爬取过的URL不在爬取 实现暂停与重启记录状态 方法一: 1.首先cd进入到scrapy项目里(当然你也可 ...

  5. FreeRTOS任务暂停和启动函数

    任务句柄 TaskHandle_t pump_task_handle = NULL; 任务的启动函数 if(eTaskGetState(pump_task_handle) != eRunning) v ...

  6. QThread 线程暂停 停止功能的实现

    为了实现Qt中线程的暂停运行,和停止运行的控制功能 需要在设置两个static型控制变量. //终止原始数据单元进队出队,并清空数据. static bool stopSign; //原始数据单元队列 ...

  7. 一个简单的dos脚本, svn 获取代码 - Tomcat 备份 - Maven 编译 - 停止/启动Tomcat - Tomcat站点 发布

    获取最新代码 svn update --username %SVN_USER% --password %SVN_PASSWORD% >> "../%LOG_FILE%" ...

  8. ElasticSearch停止启动

    1.查找ES进程 ps -ef | grep elastic 2.杀掉ES进程 kill -9 2382(进程号) 3.重启ES sh elasticsearch -d 注意:elasticsearc ...

  9. 分享Win7 将svn增加系统服务并成功启动的方法

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/default7/article/details/32728717 依照网上搜索到的方法,结果一直提示 ...

随机推荐

  1. Struts2中的校验框架

    Struts2提供的客户端校验 尽管这种支持比较弱,但采用Struts2中的客户端校验时需要注意以下几点 1..将<s:form validate="true">的va ...

  2. Java线程状态:BLOCKED与WAITING的区别

    Doc说明: /** * Thread state for a thread blocked waiting for a monitor lock. * A thread in the blocked ...

  3. Python学习笔记5(字符串与正则表达式)

    1.字符串 1.1字符串的格式化 #格式化语法 "%s" % str1 "%s %s" % (str1,str2) #格式化字符串 str1 = "v ...

  4. 磁盘管理二-LVM相关内容

    1.基本概念 LVM:logical volume manager 逻辑卷管理器 LVM构成:物理卷PV,卷组VG(PE物理区域,最小存储单元),逻辑卷LV(LE逻辑区域,最小存储单元) 三者如下图所 ...

  5. Ucenter注册后,需要二次登录才能同步登录的解决方案

    1. 打开配置文件config.inc.php 在根目录data目录下最下方定义 define('DZ_DBTABLEPRE', '你的表前缀'); 2.打开uc_server/model/user. ...

  6. JSON数据解析——jsoncpp的使用

    版权所有,转载请注明:http://blog.sina.com.cn/u/1978765352 由于工作中需要用到JSON数据,所以解析JSON数据就成了一个非常重要的工作内容. 其实用C++解析数据 ...

  7. codecomb 2090【最小乘积路】

    题目描述 给定n个点的带权有向图,求从1到n的路径中边权之积最小的简单路径. 输入格式 第一行读入两个整数n,m,表示共n个点m条边. 接下来m行,每行三个正整数x,y,z,表示点x到点y有一条边权为 ...

  8. 在 ASP.NET MVC 项目中使用 WebForm、 HTML

    原文地址:http://www.cnblogs.com/snowdream/archive/2009/04/17/winforms-in-mvc.html ASP.NET MVC和WebForm各有各 ...

  9. Python IDE的选择和安装

    安装好Python后我们需要选择合适自己的IDE进行学习,虽然利用python默认的编辑器,或者直接文档编辑也可以进行基础的学习,但总归不是太方便,能够开发python项目的IDE很多,如sublim ...

  10. ubuntu查看硬件信息

    1,外部探针probe sudo apt-get install hwinfo 执行hwinfo获取系统信息 --short