我调试了一个完整的VC检测服务、启动服务、停止服务的程
更新时间:2024-04-17 10:19:01 阅读量: 综合文库 文档下载
我调试了一个完整的VC检测服务、启动服务、停止服务的程序,结构不复杂,就三个函数。该例子是以系统自带的打印缓存服务(Print Spooler)为例演示的。 另外我写了个详细的开发教程,你自己熟悉一下。
// 注意,此程序适应的服务名称 仅为单字符串。 Spooler (√)Net Logon (×)
VC开发服务管理程序简单教程
一、新建VC对话框程序(此例子为SrvCheck),设计界面如下:
二、在SrvCheckDlg.cpp中加入服务相关的头文件:winsvc.h,如下图:
#include
三、在SrvCheckDlg.cpp文件末尾加入以下函数定义:
int ServiceIsRunning(LPCTSTR ServiceName) //检测是否运行 {
SC_HANDLE schService; // ?## 句柄 SC_HANDLE schSCManager;
DWORD RC; //double word 双字节
SERVICE_STATUS ssStatus; UINT return_value;
schSCManager = OpenSCManager(
NULL, // machine (NULL == local) NULL, // database (NULL == default) SC_MANAGER_ALL_ACCESS // access required );
// OpenSCManager函数建立了一个连接到服务控制管理器,并打开指定的数据库 if (!schSCManager) return -1;
schService = OpenService(schSCManager, ServiceName, SERVICE_ALL_ACCESS); if (!schService) {
RC = GetLastError();
CloseServiceHandle(schSCManager);
if (RC == ERROR_SERVICE_DOES_NOT_EXIST) return -2; else return -1; }
QueryServiceStatus(schService, &ssStatus);
if(ssStatus.dwCurrentState == SERVICE_RUNNING) return_value = 1; else return_value = 0; CloseServiceHandle(schService); CloseServiceHandle(schSCManager); return return_value; }
int ServiceStart( LPCTSTR ServiceName) //启动 LPCTSTR 是一种类型 L:long P:指针 // C: 容量 T:win32环境 STR:变量是一个字符串 {
SC_HANDLE schService; SC_HANDLE schSCManager; DWORD RC;
UINT return_value;
schSCManager = OpenSCManager(
NULL, // machine (NULL == local) NULL, // database (NULL == default) SC_MANAGER_ALL_ACCESS // access required ); if (!schSCManager) return -1;
schService = OpenService(schSCManager, ServiceName, SERVICE_ALL_ACCESS); if (!schService) {
RC = GetLastError();
CloseServiceHandle(schSCManager);
if (RC == ERROR_SERVICE_DOES_NOT_EXIST) return -2; else return -1; }
return_value = StartService(schService, 0, NULL) ? 1 : -1; RC = GetLastError();
CloseServiceHandle(schService); CloseServiceHandle(schSCManager); return return_value; }
int ServiceStop(LPCTSTR ServiceName,ULONG TimeoutSeconds) //停止 {
SC_HANDLE schService; SC_HANDLE schSCManager; DWORD RC;
UINT return_value; SERVICE_STATUS SrvStatus;
schSCManager = OpenSCManager(
NULL, // machine (NULL == local) NULL, // database (NULL == default) SC_MANAGER_ALL_ACCESS // access required ); if (!schSCManager) return -1;
schService = OpenService(schSCManager, ServiceName, SERVICE_ALL_ACCESS); if (!schService) {
RC = GetLastError();
CloseServiceHandle(schSCManager);
if (RC == ERROR_SERVICE_DOES_NOT_EXIST) return -2; else return -1; }
return_value = ControlService(schService, SERVICE_CONTROL_STOP, &SrvStatus) ? 1 : -1;
if(return_value) {
while(QueryServiceStatus(schService, &SrvStatus)) {
if ( SrvStatus.dwCurrentState == SERVICE_STOP_PENDING ) { if(!TimeoutSeconds) break;
if(TimeoutSeconds != -1) TimeoutSeconds--;
Sleep( 1000 ); } else { break; } }
if(SrvStatus.dwCurrentState == SERVICE_STOPPED) { return_value = 1; } else {
return_value = -1; } } else {
return_value = -2; }
RC = GetLastError();
CloseServiceHandle(schService); CloseServiceHandle(schSCManager); return return_value; }
四、各按钮代码如下: ①检测服务
if(ServiceIsRunning(\ MessageBox(\服务运行中......\ else MessageBox(\未检测到服务运行!\②停止服务
if(ServiceStop(\ MessageBox(\服务已停止运行!\③启动服务
if(ServiceStart(\ MessageBox(\服务已成功启动!\
Net Logon
WebClient
………………………………………………………………………………………………
void CFuwuDlg::OnButton1() { // TODO: Add your control notification handler code here
CString strTemp; GetDlgItemText(IDC_EDIT1,strTemp);
if(ServiceIsRunning(strTemp)==1) MessageBox(\服务运行中......\ else MessageBox(\未检测到服务运行!\ }
正在阅读:
我调试了一个完整的VC检测服务、启动服务、停止服务的程04-17
2014-2015学年七年级数学寒假测试(一元一次方程二)07-28
2019年水泥销售工作计划范文03-10
保险公司计划财务部岗位职责03-08
英语专业四级考试状语从句练习10-03
考教师资格证面试遇到的问题05-30
2017-2023年中国汽车美容市场前景研究与未来发展趋势报告(目录)08-31
初中生暑假日记800字大全11-21
梦想养殖创业的故事07-21
- 计算机试题
- 【2012天津卷高考满分作文】鱼心人不知
- 教育心理学历年真题及答案--浙江教师资格考试
- 20180327-第六届“中金所杯”全国大学生金融知识大赛参考题库
- 洪林兴达煤矿2018年度水情水害预测预报
- 基本要道讲义
- 机电设备安装试运行异常现象分析与对策
- 《有机化学》复习资料-李月明
- 非常可乐非常MC2--非常可乐广告策划提案 - 图文
- 2011中考数学真题解析4 - 科学记数法(含答案)
- 企业人力资源管理师三级07- 09年真题及答案
- 基于单片机的光控自动窗帘控制系统设计说明书1 - 图文
- 20160802神华九江输煤皮带机安装方案001
- (共53套)新人教版一生物必修2(全册)教案汇总 word打印版
- 2014行政管理学总复习
- 中国银监会关于加强地方政府融资平台贷款风险监管的指导意见
- 民宿酒店核心竞争与研究
- 游园活动谜语大全2012
- 河南省天一大联考2016届高三英语5月阶段性测试试题(六)(A卷)
- 小型超市管理系统毕业论文详细设计4
- 服务
- 调试
- 停止
- 完整
- 检测
- 启动
- 一个
- 会计学双学位毕业论文
- 第六单元《100以内的加减法》
- 北语网院18春《中国古代物质文化》作业 - 2
- 2011.4.25石灰窑金矿储量核实报告
- 国际贸易企业存在的主要财务风险与应对策略探讨
- (最终版)(1) - 图文
- 阅读40分高分研究 - 精华整理版 -
- 推荐精品小学语文苏教版五年级下册《海伦凯勒》优质课教案设计
- 索迪斯服务方案介绍终稿 - 图文
- 8B-Unit2-Travelling教案
- 科学抓管理 有效提高课堂教学质量
- 2018年全国企业员工全面质量管理知识竞赛试题附答案
- 度米作文汇编之八一建军节的感想作文素材橄榄绿
- 中国卫生人才网 2014年安徽护士执业资格考试通知
- 汉字书写大赛题
- 实验一用有限差分法解静电场边值问题
- 2014-2015学年江苏省南京市鼓楼区八年级(下)期末物理试卷(解
- 中兴通讯管理层结构及其分析 - 图文
- 不能作为门槛条件和打分项的非国家强制认证目录
- 未央歌与抗战文学