首页
社区
课程
招聘
[原创]Windows系统程序设计之系统服务
发表于: 2006-7-18 10:25 16390

[原创]Windows系统程序设计之系统服务

2006-7-18 10:25
16390
#ifndef _CSM_H
#define _CSM_H

#ifndef _WINSVC_H
#include <Winsvc.h>
#define _WINSVC_H
#endif

#include <stdlib.h>

const int MAX_SERVICE_NUM = 512 ;

class CSM {
public:
	DWORD		dwSerNum ;
	UINT		nSerIndex[MAX_SERVICE_NUM];
	ENUM_SERVICE_STATUS SerStatus[MAX_SERVICE_NUM] ;

public:
	CSM () {}
	~CSM () {}
	
public:
	// 枚举服务
	BOOL EnumWin32Service ( ) ;
	
	// 启动服务
	BOOL StartWin32Service ( UINT nIndex ) ;
	
	// 停止服务
	BOOL StopWin32Service ( UINT nIndex ) ;
	
	// 暂停服务
	BOOL PauseWin32Service ( UINT nIndex ) ;
	
	//恢复服务
	BOOL ContinueWin32Service ( UINT nIndex ) ;
	
	// 服务启动类型--自动
	BOOL SetAutoStartType ( UINT nIndex ) ;

	// 服务启动类型--手动
	BOOL SetManualStartType ( UINT nIndex ) ;

	// 服务启动类型--禁用
	BOOL SetDisableStartType ( UINT nIndex ) ;

	// 取得服务的启动类型
	UINT GetServiceStartType ( UINT nIndex ) ;
	
	// 加载服务
	BOOL AddWin32Service ( LPCSTR lpServiceName, LPCSTR lpDisplayName, LPSTR lpPathName ) ;

	// 卸载服务
	BOOL DeleteWin32Service ( UINT nIndex ) ;
	
protected:
	// 取得指定索引的服务的句柄
	SC_HANDLE GetServiceByIndex ( UINT nIndex ) ;

	// 以显示名称排序
	void SortByDisplayName () ;

	// 自定义字符串比较
	int MyStrCmp ( LPSTR FirStr, LPSTR SecStr ) ;
} ;

#endif

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 7
支持
分享
最新回复 (23)
雪    币: 2134
活跃值: (14)
能力值: (RANK:170 )
在线值:
发帖
回帖
粉丝
2
要是顺便说一下系统服务实现细节就好了
2006-7-18 10:30
0
雪    币: 179
活跃值: (131)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
3
义无反顾的支持!
2006-7-18 10:40
0
雪    币: 234
活跃值: (370)
能力值: ( LV9,RANK:530 )
在线值:
发帖
回帖
粉丝
4
学习:)--
2006-7-18 11:00
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
最初由 北极星2003 发布
Windows系统程序设计之系统服务

【作者】北极星2003
【来源】看雪技术论坛(bbs.pediy.com)
【时间】2006-7-18
........

内容和标题不符,没涉及到具体的service编程,也没讲service的工作原理,其实jeffrey richter的书《Programming Server-Side Applications for Microsoft Windowsr 2000》已经把service讲的非常清楚了,包括各种io模型以及iocp等。
强烈推荐此书!
http://www.dfm24.com.cn/xszhou/Programming Server-Side Applications for Microsoft Windows 2000.rar
2006-7-18 11:02
0
雪    币: 1852
活跃值: (504)
能力值: (RANK:1010 )
在线值:
发帖
回帖
粉丝
6
最初由 xszhou 发布
内容和标题不符,没涉及到具体的service编程,也没讲service的工作原理,其实jeffrey richter的书《Programming Server-Side Applications for Microsoft Windowsr 2000》已经把service讲的非常清楚了,包括各种io模型以及iocp等。
强烈推荐此书!
http://www.dfm24.com.cn/xszhou/Programming Server-Side Applications for Microsoft Windows 2000.rar


我的目标是作为实例,如果有难点都会进行相关的阐述
但看我文章的前提是要有相关方面的基础知识,

至于你说的ICO,IOCP,不在这篇文章的范围内,我在其他篇幅中也有这些方面的实例程序及相关介绍

如果觉得这个标题不够恰当,这个不是问题,大家定个比较合适的

不过有一点,这里指的是Win32系统服务,而不是C/S中的服务,这也是有区别的
2006-7-18 11:26
0
雪    币: 236
活跃值: (35)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
支持 北极星的好东西
2006-7-18 14:04
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
不错!

建议加点内容:加一个编辑框,每选中一个服务时,介绍其主要功能、所起的作用,安全方面的问题,用词要简洁,用户看看这些信息就会立即作出决定,是自动启动、手动还是取消该服务,这样就可变成一个好帮手。
2006-7-18 15:35
0
雪    币: 750
活跃值: (228)
能力值: ( LV9,RANK:780 )
在线值:
发帖
回帖
粉丝
9
支持,不过我不会C
2006-7-18 16:48
0
雪    币: 217
活跃值: (99)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
这类工具已经有不少了,建议加入"高亮显示非操作系统服务"的实用功能.
2006-7-18 20:00
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
11
北极星兄弟高产。
2006-7-18 22:10
0
雪    币: 603
活跃值: (617)
能力值: ( LV12,RANK:660 )
在线值:
发帖
回帖
粉丝
12
对不住北极星兄弟了,我收到你邮件后突然有急事去了外地,今天才回来,事发突然,完全把你的事情忘到脑后去了,幸好你解决了问题,这里跟你说声抱歉!
2006-7-19 13:22
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
不错
多多指教
2006-7-20 10:07
0
雪    币: 1852
活跃值: (504)
能力值: (RANK:1010 )
在线值:
发帖
回帖
粉丝
14
最初由 sunbaiy 发布
不错!

建议加点内容:加一个编辑框,每选中一个服务时,介绍其主要功能、所起的作用,安全方面的问题,用词要简洁,用户看看这些信息就会立即作出决定,是自动启动、手动还是取消该服务,这样就可变成一个好帮手。


最初由 dwing 发布
这类工具已经有不少了,建议加入"高亮显示非操作系统服务"的实用功能.


多谢两位建议,我有空会加上去的
2006-7-20 15:04
0
雪    币: 1852
活跃值: (504)
能力值: (RANK:1010 )
在线值:
发帖
回帖
粉丝
15
最初由 prince 发布
对不住北极星兄弟了,我收到你邮件后突然有急事去了外地,今天才回来,事发突然,完全把你的事情忘到脑后去了,幸好你解决了问题,这里跟你说声抱歉!


你太客气了,前段时间有点忙,后来空了也就解决了.
2006-7-20 15:05
0
雪    币: 146
活跃值: (33)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
16
非常支持北极星大哥把参考的文献也列出来.....要能把解决问题遇到的困难说说,....就...
2006-7-20 20:22
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
渴望里面的知识
2006-8-7 18:00
0
雪    币: 139
活跃值: (126)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
18
关键是如何调试,这才是难点,因为它们和普通的程序不同。如何写service的例子程序上google一查有很多,请多介绍相关的调试排错技巧。
2006-8-8 09:27
0
雪    币: 1852
活跃值: (504)
能力值: (RANK:1010 )
在线值:
发帖
回帖
粉丝
19
最初由 bookworm 发布
关键是如何调试,这才是难点,因为它们和普通的程序不同。如何写service的例子程序上google一查有很多,请多介绍相关的调试排错技巧。


就是因为这部分内容网上太多,所以我就没有介绍如何写服务,只写了这个软件

另外对于如何写服务,在参考资料中列举了一些我觉得不错的资料

其实我做的这个软件本身比较简单,利用API从系统服务数据库中读取信息,或许有时间的时候我可以介绍些关于服务的原理性东西

上次遇到的问题,VC6.0本身的问题,一些莫名奇妙的问题,后来发现在clear原有的编译信息,再重新编译的话就可以了
2006-8-8 13:57
0
雪    币: 1832
活跃值: (5415)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
20
顶一下........
2006-8-20 13:37
0
雪    币: 216
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
WINXP SP2下测试,服务能够添加,无法运行,“自动,手动,禁用”等状态修改功能正常,还望查找下何处出现故障
2006-10-8 16:37
0
雪    币: 117
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
个人感觉,这个例子,或者说这篇文章只是介绍了我们写这样一个程序需要使用哪几个API.

如果能介绍一下这几个API的参数各表示什么,在使用中有什么需要注意的问题就更完美了.虽然这些在MSDN上也能查到,但一是由于那个是英文,二是由于在实际使用中还是存在一些问题.所以简要的介绍一下还是有必要的.

这是为出这本书而写的文章,需要的是更详细的讲解,而不是一段例程.

纯属个人看法.
2006-11-12 19:10
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
好文章,支持!
2006-11-23 11:15
0
雪    币: 203
活跃值: (47)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
学习下。唉,来了这里看帖,才知道牛人一堆又一堆
2006-11-29 20:23
0
游客
登录 | 注册 方可回帖
返回
//