中国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
状态 离线
『楼 主』:  用批处理添加一个系统服务为什么需要重启才生效? 使用 LLM 解释/回答一下

代码如下:
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 楼』:   使用 LLM 解释/回答一下

用 sc 来创建


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





积分 37
发帖 36
注册 2008-12-2
状态 离线
『第 3 楼』:   使用 LLM 解释/回答一下

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


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





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 4 楼』:   使用 LLM 解释/回答一下

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 楼』:   使用 LLM 解释/回答一下

// 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
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复

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


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



论坛跳转: