编写有图形界面的 Windows 服务程序
2007-03-17 22:00:17 来源:WEB开发网[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices]下增加子项test1;
test1下增加:
字符串型:"Description"="测试服务1"
字符串型:"DisplayName"="test1-displayname"
DWORD型:"ErrorControl"=dword:00000001
可扩充字符串值(即文件所在路径):
"ImagePath"=hex(2):43,00,3a,00,5c,00,74,00,65,00,73,00,74,00,31,00,2e,00,65,00,
78,00,65,00,00,00
字符串型:"ObjectName"="LocalSystem"
DWORD型,值为3表示是手动:"Start"=dword:00000003
DWORD型:"Type"=dword:00000020
test1下增加子项:
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices est1Security]
里面的键值从其他的服务程序注册表值中复制。
如果test1这一程序只是一个普通的win32程序,那么这样做了之后还是不行,服务程序有它自己的一些结构特点。那么怎么编写这些服务程序?
建立一个服务程序的最简单的方法是用VC中的ATL COM向导。主菜单中选择新建,然后选Projects中的ATL COM AppWizard,输入一个项目名,选择了所在目录后,点OK按钮,在出现的对话框中选择Service(EXE),点Finish即可。然后编译生成test1.exe。
运行test1.exe /regserver可以注册程序为服务,test1.exe /unregserver是取消注册。test1.exe运行时的参数是在:
Project->Settings->Debug->Program arguments中设置。
三、怎么在建立的服务程序中加入自己的代码?
我们看一下刚才生成的test1项目的结构。
我们看到test1有一个类CServiceModule和一些Globals的内容。Globals包括一个_tWinMain函数,也就是程序的入口,其中使用了FindOneOf这一与分析命令行有关的函数,还剩下一个全局变量_Module。
更多精彩
赞助商链接