中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 用批处理添加一个系统服务为什么需要重启才生效?
作者:
标题: 用批处理添加一个系统服务为什么需要重启才生效? 上一主题 | 下一主题
cnds
初级用户





积分 37
发帖 36
注册 2008-12-2
状态 离线
『楼 主』:  用批处理添加一个系统服务为什么需要重启才生效?

代码如下:
reg add "HKLM\SYSTEM\ControlSet001\Services\HZ_CommSrv" /f /v "Type" /t REG_DWORD /d 272
reg add "HKLM\SYSTEM\ControlSet001\Services\HZ_CommSrv" /f /v "Start" /t REG_DWORD /d 2
reg add "HKLM\SYSTEM\ControlSet001\Services\HZ_CommSrv" /f /v "ErrorControl" /t REG_DWORD /d 1
reg add "HKLM\SYSTEM\ControlSet001\Services\HZ_CommSrv" /f /v "ImagePath" /t REG_EXPAND_SZ /d "C:\WINDOWS\system32\HZ_CommSrv.exe"
reg add "HKLM\SYSTEM\ControlSet001\Services\HZ_CommSrv" /f /v "DisplayName" /t REG_SZ /d "HDZB Comm Service For V2.0"
reg add "HKLM\SYSTEM\ControlSet001\Services\HZ_CommSrv" /f /v "ObjectName" /t REG_SZ /d "LocalSystem"
上面这些代码,可以向系统写入一个名为“HZ_CommSrv”的系统服务,
但是写入后必须重启操作系统,服务方能在系统的服务列表里显示出来,
有没有办法写入后直接能启用这个服务的方法呢?请教各位了,谢谢。

2010-3-19 14:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lslcxlsl
初级用户





积分 52
发帖 24
注册 2007-8-24
状态 离线
『第 2 楼』:  

用 sc 来创建

2010-3-19 14:36
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
cnds
初级用户





积分 37
发帖 36
注册 2008-12-2
状态 离线
『第 3 楼』:  

能否使用写入注册表的方式来启动一个服务?
我试过了,找不到注册表的变化。

2010-3-21 11:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 4 楼』:  

net start不行么?



S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
2010-3-21 15:39
查看资料  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 5 楼』:  

// delphi新建服务
function CreateServices(Const SvrName,FilePath:   String):   Boolean;   
var   
        a,b:SC_HANDLE;   
begin   
        Result:=False;   
            if FilePath   =''   then   Exit;   
   
        a   :=   OpenSCManager(nil,nil,SC_MANAGER_CREATE_SERVICE);   
   
        if   a   <=   0   then   Exit;   
        try   
              b   :=   CreateService(a,PChar(SvrName),   
               PChar(SvrName),   
               SERVICE_ALL_ACCESS,   
               SERVICE_INTERACTIVE_PROCESS   or   SERVICE_WIN32_OWN_PROCESS,   
               SERVICE_AUTO_START,SERVICE_ERROR_NORMAL,   
               PChar(FilePath),nil,nil,nil,nil,nil);   
                  if   b   <=   0   then   begin   
                    ShowMessage(   SysErrorMessage(   GetlastError   ));   
                    Exit;   
              end;   
                  CloseServiceHandle(a);   
              CloseServiceHandle(b);   
               
              Result   :=   True;   
        except   
              CloseServiceHandle(a);   
              CloseServiceHandle(b);   
              Exit;   
        end;   
end;

[ Last edited by Hanyeguxing on 2010-3-21 at 17:14 ]



批处理之家 http://bbs.bathome.net/forum-5-1.html
2010-3-21 15:44
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: