Windows XP下Service的编程入门[1]
Windows XP下Service的编程入门[1]
// _dse.cpp : Defines the entry point for the console application.
// 作者: 秋镇菜
// E-mail: cyin8@msn.com
#include "stdafx.h"
#include "windows.h"
int main(int argc, char* argv[])
{
LPCTSTR lpServiceName = "Themes"; // 本例为关闭 Themes 服务
SC_HANDLE scman = ::OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
/* =============================================================================
SC_HANDLE OpenSCManager(LPCTSTR lpszMachineName,
LPCTSTR lpszDatabaseName,
DWORD fdwDesiredAccess);
== Open SCManager 函数打开指定计算机上的service control manager database。
== 其中参数lpszMachineName指定计算机名,若为空则指定为本机。
== 参数lpszDatabaseName指定要打开的service control manager database,默认为空。
== 参数fdwDesiredAccess指定操作的权限,可以为下面取值之一
SC_MANAGER_ALL_ACCESS //所有权限
SC_MANAGER_CONNECT //允许连接service control manager
SC_MANAGER_CREATE_SERVICE //允许创建服务对象并把它加入service control manager database
SC_MANAGER_ENUMERATE_SERVICE //允许枚举service control manager database中的服务
SC_MANAGER_LOCK //允许锁住service control manager database
SC_MANAGER_QUERY_LOCK_STATUS //允许获取servicecontrolmanagerdatabase的封锁信息
== 函数返回值:函数执行成功则返回一个指向service control manager database的句柄,失败则返回NULL。
============================================================================== */
if (scman)
{
SC_HANDLE sh = ::OpenService(scman, lpServiceName, SERVICE_STOP);
/* ========================================================================
SC_HANDLE OpenService(SC_HANDLE schSCManager,
LPCTSTR lpszServiceName,
DWORD fdwDesiredAccess);
== OpenService函数打开指定的Service。
== 其中参数schSCManager是指向service control manager database的句柄,
由OpenSCManager函数返回。
== 参数lpszServiceName要打开的服务的名字,注意大小写。
== 参数fdwDesiredAccess指定操作的权限,可以为下面取值之一
SERVICE_ALL_ACCESS //所有权限
SERVICE_CHANGE_CONFIG //允许更改服务的配置
SERVICE_ENUMERATE_DEPENDENTS //允许获取依赖于该服务的其他服务
SERVICE_INTERROGATE //允许立即获取服务状态
SERVICE_PAUSE_CONTINUE //允许暂停和唤醒服务
SERVICE_QUERY_CONFIG //允许获取服务配置
SERVICE_QUERY_STATU //允许通过访问service control manager获取服务状态
SERVICE_START //允许启动服务
SERVICE_STOP //允许停止服务
SERVICE_USER_DEFINE_CONTROL //允许用户指定特殊的服务控制码
== 函数返回值:函数执行成功则返回指向某项服务的句柄,失败则返回NULL。
========================================================================== */
if (sh)
{
BOOL ctrl;
SERVICE_STATUS ServiceStatus;
ctrl = ::ControlService(sh, SERVICE_CONTROL_STOP, &ServiceStatus);
/* ==========================================================================
BOOL ControlService(SC_HANDLE hService,
DWORD dwControl,
LPSERVICE_STATUS lpServiceStatus);
== ControlService函数向Win32service发送控制码。
== 其中参数hService是指向某项服务的句柄,由OpenService函数返回。
== 参数dwControl为控制码,常用的有
SERVICE_CONTROL_STOP //停止服务
SERVICE_CONTROL_PAUSE //暂停服务
SERVICE_CONTROL_CONTINUE //唤醒暂停的服务
SERVICE_CONTROL_INTERROGATE//刷新某服务的状态
== 参数lpServiceStatus指向SERVICE_STATUS结构,用于存放该服务最新的状态信息。
== 函数返回值:函数执行成功则返回True,失败则返回False。
============================================================================= */
DWORD dwControl;
if (ctrl)
{
printf("success to stop the service /"%s/"/n",lpServiceName);
}
else
{
dwControl = ::GetLastError();
switch(dwControl){
case ERROR_ACCESS_DENIED:
printf("The specified handle was not opened with the necessary access./n");
break;
case ERROR_SERVICE_NOT_ACTIVE:
printf("The service has not been started./n");
break;
case ERROR_DEPENDENT_SERVICES_RUNNING:
printf("The service cannot be stopped because other running services are dependent on it./n");
break;
case ERROR_INVALID_SERVICE_CONTROL:
printf("The requested control code is not valid, or it is unacceptable to the service./n");
break;
case ERROR_SERVICE_CANNOT_ACCEPT_CTRL:
printf("The requested control code cannot be sent to the service because the state of the service is SERVICE_STOPPED, SERVICE_START_PENDING, or SERVICE_STOP_PENDING./n");
break;
case ERROR_SERVICE_REQUEST_TIMEOUT:
printf("The service did not respond to the start request in a timely fashion./n");
break;
}
}
}
CloseServiceHandle(sh); // 关闭该Service
}
CloseServiceHandle(scman); // 关闭该Service
printf("Hello World!/n");
return 0;
}
Windows XP下Service的编程入门[1]相关推荐
- Windows XP下Service的编程入门[2]
Windows XP下Service的编程入门[2] // _dse.cpp : Defines the entry point for the console application. // 作者: ...
- linux操作系统下 c语言编程入门
linux操作系统下 c语言编程入门 (一)目录介绍 1)Linux程序设计入门--基础知识 2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门 ...
- linux操作系统下c语言编程入门
linux操作系统下c语言编程入门 整理编写:007xiong 原文:Hoyt等 (一)目录介绍 1)Linux程序设计入门--基础知识 2)Linux程序设计入门--进程介绍 3)Linux ...
- 【转贴】linux操作系统下c语言编程入门
[转贴]linux操作系统下c语言编程入门 发信人: Lerry (驴是的念来过倒·杏红等头墙上爬), 信区: Linux 标 题: linux操作系统下c语言编程入门 发信站: 哈工大紫丁香 (Fr ...
- 用Javascript代码实现浏览器菜单命令(以下代码在 Windows XP下的浏览器中调试通过
每当我们看到别人网页上的打开.打印.前进.另存为.后退.关闭本窗口.禁用右键等实现浏览器命令的链接,而自己苦于不能实现时,是不是感到很遗憾?是不是也想实现?如果能在网页上能实现浏览器的命令,将是多么有 ...
- Windows XP 下的 MySQL+Apache+PHP 运行环境架设 (顶)
原址:http://shisanfeng.blogspot.com/search/label/%23-WAMP 一.概述 本文详细描述了如何在 Windows 系统上手工架设 PHP 服务器运行环境. ...
- linux c++编程教程,Linux下的C++编程入门教程.ppt
<Linux下的C++编程入门教程.ppt>由会员分享,可在线阅读,更多相关<Linux下的C++编程入门教程.ppt(14页珍藏版)>请在人人文库网上搜索. 1.Linux下 ...
- linux下的c 编程入门教程,Linux下的C编程入门教程.ppt
<Linux下的C编程入门教程.ppt>由会员分享,可在线阅读,更多相关<Linux下的C编程入门教程.ppt(14页珍藏版)>请在装配图网上搜索. 1.Linux下c+编程, ...
- 成功解决:将后缀.pyx格式文件(linux环境)编译成pyd文件(windows环境下)实现python编程加载或导入
成功解决:将后缀.pyx格式文件(linux环境)编译成pyd文件(windows环境下)实现python编程加载或导入 目录 解决问题 解决思路 解决方法 解决问题 .pyx格式文件,在window ...
最新文章
- Gitea 1.7.6 发布,一键部署的自助 Git 服务
- mysql 字段相同条数_用sql语句统计数据库某个字段中相同的数据有多少条?
- 列出本机安装的所有硬件设备
- php pdo 查询语句,PDO:预处理语句(参数化查询)
- iMac 是什么?苹果2021新款 iMac 购买建议
- 仅用18天,英伟达新型GAN合成真假难辨高清明星脸
- 基于Opencv3.0对图像进行透视变换
- uniapp 分享缩略图过大怎么办_经验分享| 反击破转子断裂的应急处理方法
- 测试过程中常用的linux命令之【删除指定的文件行】
- Windows多用户远程桌面-采用RDP Wrapper Library支持10.0.18363.900、10.0.18362.836、10.0.19041.789之前所有的Windows版本
- Questa-sim安装最后一步点了是之后,安装了hardlock.sys文件导致电脑无限蓝屏重启的解决方案
- android 看图片tv版,易图浏览_易图浏览TV版APK下载_电视版 for 安卓TV_ZNDS软件
- sudo_拔剑-浆糊的传说_新浪博客
- 红黑树时间复杂度为什么是O(logn)?
- 基于 Sentinel-2 卫星数据的像元三分法模型
- 推荐:雨林木风Linux
- 2014025640《大四实习》第*周学习总结
- 关于SAP十个常见问题集锦
- “熬夜导致秃头”,因果关系推断说这话有问题!
- python+pyqt5
热门文章
- 32位操作系统,为什么最大支持4G存储空间,2的32次方 = 4294967296bit = 4G,这个怎么计算出来的,
- 产品案例:这些呼声很高功能,微信为何还不做?
- 如何考核产品经理的绩效?
- 技术人员转行产品经理读这些书就够了
- 数据异常HTML,@ Html.DropDownListFor的数据绑定异常
- android打不开,android加入权限应用打不开
- python开发小型数据库_python web开发之数据库ORM的 peewee库 动手学习实践笔记
- 首届中国信息通信大数据大会将于4月20-21日在京召开
- 作者:杨琪,数据堂(北京)科技股份有限公司企业发展部副总监。
- 【数据库系统】DBMS、DBS、DBA、DB的区别