Tom_lyd
驱动大牛
驱动大牛
  • 注册日期2001-09-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:1411回复:11

user mode service 有没有人写过,怎么写?和WDM的区别在哪里?哪里有资料?

楼主#
更多 发布于:2002-06-17 15:38
user mode service 有没有人写过,怎么写?和WDM的区别在哪里?哪里有资料?
Tom_lyd
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2002-06-17 15:50
gz
zdhe
驱动太牛
驱动太牛
  • 注册日期2001-12-26
  • 最后登录2018-06-02
  • 粉丝0
  • 关注0
  • 积分72362分
  • 威望362260点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2002-06-17 16:03

usermode service is very simple , it response to service control ( something like net start, net stop etc).
run by system so without logon, it can be started or stoped.

platform sdk have a service control tool: sc.exe


use atl can easiler build a first step service.

no relation with wdm.

VanCheer
驱动老牛
驱动老牛
  • 注册日期2002-02-21
  • 最后登录2003-08-28
  • 粉丝0
  • 关注0
  • 积分-20分
  • 威望-10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-06-17 16:18
很简单的啦,Klez和Funlove都用到了service,兄弟你看看SCM API就行了,在MSDN中,不妨先看看CreateService
[img]http://www.driverdevelop.com/forum/upload/VanCheer/2003-03-21_mon.gif[/img][img]http://www.driverdevelop.com/forum/upload/VanCheer/2002-12-07_smallbaby.jpg[/img]
guardee
驱动巨牛
驱动巨牛
  • 注册日期2002-11-08
  • 最后登录2010-05-29
  • 粉丝2
  • 关注1
  • 积分2分
  • 威望34点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-06-18 23:13
呵呵!service在SDK里面有一个例子的,具体的路径我忘记了,你搜查一下吧,好象目录名也是service的
pjf
pjf
驱动中牛
驱动中牛
  • 注册日期2001-07-08
  • 最后登录2006-10-23
  • 粉丝0
  • 关注0
  • 积分42分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-06-19 09:37
http://www.driverdevelop.com/read.php?t=S&id=366
里面有个例子。

愿意的话用C++Builder写Win32服务最简单了,当然也有缺点。
Tom_lyd
驱动大牛
驱动大牛
  • 注册日期2001-09-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-06-19 10:48
谢谢各位的回答,我已经知道什么是Win32 Service了,我总结一下各位的回答和我的理解,大家看有什么不对。
其实Win32 Service本质就是EXE应用程序程序,无非它需要在注册表中创建一项,并且通过特定的StartType值可以指定它是否是随系统启动而一起启动。Service一定要通过一个CreateService调用来登记自己到注册表。
驱动程序也需要CreateService,但是它的ServiceType却一定要是SERVICE_KERNEL_DRIVER,而上面的Win32 Service却一定要是SERVICE_WIN32_OWN_PROCESS或SERVICE_WIN32_SHARE_PROCESS。
服务基本上可以仅仅用简单的应用程序代替。
Tom_lyd
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
7楼#
发布于:2002-06-19 10:59
我也是这样认为的。
VanCheer
驱动老牛
驱动老牛
  • 注册日期2002-02-21
  • 最后登录2003-08-28
  • 粉丝0
  • 关注0
  • 积分-20分
  • 威望-10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-06-19 11:08
谢谢各位的回答,我已经知道什么是Win32 Service了,我总结一下各位的回答和我的理解,大家看有什么不对。
其实Win32 Service本质就是EXE应用程序程序,无非它需要在注册表中创建一项,并且通过特定的StartType值可以指定它是否是随系统启动而一起启动。Service一定要通过一个CreateService调用来登记自己到注册表。
驱动程序也需要CreateService,但是它的ServiceType却一定要是SERVICE_KERNEL_DRIVER,而上面的Win32 Service却一定要是SERVICE_WIN32_OWN_PROCESS或SERVICE_WIN32_SHARE_PROCESS。
服务基本上可以仅仅用简单的应用程序代替。

“服务基本上可以仅仅用简单的应用程序代替”???
Very错! :mad:
一个服务启动的时候要派发系统的服务指令,给系统以响应,否则系统认为它是错误的服务。
去MSDN看看StartServiceCtrlDispatcher这个API,或者去我的病毒版看看Funlove的源代码 :(
[img]http://www.driverdevelop.com/forum/upload/VanCheer/2003-03-21_mon.gif[/img][img]http://www.driverdevelop.com/forum/upload/VanCheer/2002-12-07_smallbaby.jpg[/img]
VanCheer
驱动老牛
驱动老牛
  • 注册日期2002-02-21
  • 最后登录2003-08-28
  • 粉丝0
  • 关注0
  • 积分-20分
  • 威望-10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-06-19 11:36
还有,
“实Win32 Service本质就是EXE应用程序程序,无非它需要在注册表中创建一项,并且通过特定的StartType值可以指定它是否是随系统启动而一起启动。”
气死我了
你说的这个确实只需要普通程序,只要在注册表里改一下run值就可以了,很多病毒都这么干,但这绝不是服务! :mad:
[img]http://www.driverdevelop.com/forum/upload/VanCheer/2003-03-21_mon.gif[/img][img]http://www.driverdevelop.com/forum/upload/VanCheer/2002-12-07_smallbaby.jpg[/img]
Tom_lyd
驱动大牛
驱动大牛
  • 注册日期2001-09-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-06-19 11:53
Koms Bomb兄:
别生气,俗话说,不知者无罪,所以先请原谅小弟的无知。
我有以下疑问想请教:
1.Service是以什么形式存在的,是.EXE文件吗?
2.创建Service需要调用Win32 API CreateSerivce( ... )函数。该函数将在HKLM\\System\\CurrentControlSet\\Serivces\\键下创建服务主键,CreateService的参数可以指定Service的类型是内核服务(驱动程序)还是Win32服务,同时可以通过StartType参数指定服务是以什么方式启动。net use命令可以用来启动服务。这个理解有没有错误?
3.我没有提及在Run主键下添加内容使应用程序自动启动,此纯属误解,可能是我没有描述清楚,见谅。

还望多指教!
Tom_lyd
VanCheer
驱动老牛
驱动老牛
  • 注册日期2002-02-21
  • 最后登录2003-08-28
  • 粉丝0
  • 关注0
  • 积分-20分
  • 威望-10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-06-19 16:18
啊哈,大兄弟,我没生气,只是喜欢那个表情而已:mad: :D
Koms Bomb兄:
别生气,俗话说,不知者无罪,所以先请原谅小弟的无知。
我有以下疑问想请教:
1.Service是以什么形式存在的,是.EXE文件吗?

Yes,.exe,标准的PE文件,但它不是一般的程序,程序流程不一样,它需要响应系统的服务指令,派发之。

2.创建Service需要调用Win32 API CreateSerivce( ... )函数。该函数将在HKLM\\System\\CurrentControlSet\\Serivces\\键下创建服务主键,CreateService的参数可以指定Service的类型是内核服务(驱动程序)还是Win32服务,同时可以通过StartType参数指定服务是以什么方式启动。net use命令可以用来启动服务。这个理解有没有错误?

服务有几种类型,比如自启动的(Vxer最关心的),手工启动的,等等
net use我倒是不懂。

3.我没有提及在Run主键下添加内容使应用程序自动启动,此纯属误解,可能是我没有描述清楚,见谅。

不是误解,是实现你说的那种的方法

还望多指教!
要多了解,上ICQ,我有空可以给你写个sample,不过我想MSDN或者网上应该能找到很多sample的。
 
[img]http://www.driverdevelop.com/forum/upload/VanCheer/2003-03-21_mon.gif[/img][img]http://www.driverdevelop.com/forum/upload/VanCheer/2002-12-07_smallbaby.jpg[/img]
游客

返回顶部