标题: 用批处理添加一个系统服务为什么需要重启才生效?
[打印本页]
作者: cnds
时间: 2010-3-19 14:21
标题: 用批处理添加一个系统服务为什么需要重启才生效?
代码如下:
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”的系统服务,
但是写入后必须重启操作系统,服务方能在系统的服务列表里显示出来,
有没有办法写入后直接能启用这个服务的方法呢?请教各位了,谢谢。
作者: lslcxlsl
时间: 2010-3-19 14:36
用 sc 来创建
作者: cnds
时间: 2010-3-21 11:40
能否使用写入注册表的方式来启动一个服务?
我试过了,找不到注册表的变化。
作者: slore
时间: 2010-3-21 15:39
net start不行么?
作者: Hanyeguxing
时间: 2010-3-21 15:44
// 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 ]