怎样调整service的启动时间,!!!!!!!!!!!!!1(200分)

  • 主题发起人 主题发起人 一剑封喉
  • 开始时间 开始时间

一剑封喉

Unregistered / Unconfirmed
GUEST, unregistred user!
本人做了一个service程序,不过由与数据的问题,启动该服务需要很长时间,
而window2000上好象默认的启动服务时间在30秒,而我的服务需要1、2分钟的时间才能启动
,所以现在无法使用这个服务程序,不知道,各位大侠有没有遇到过这样的问题。
或者能够修改window2000的服务启动时间,或者能够用程序来实现这一点。
 
可以通过修改注册表来改变服务启动等待时间, 但是没必要这么做
你只要在服务启动完成之后才进行数据操作就行了。

下面的例子是在服务启动完成15秒后执行一个批处理, 应该能给你一些思路吧
procedure TTestSerivce.ServiceExecute(Sender: TService);
var
B: Cardinal;
Cmds: string;
WaitTime: Cardinal;
begin
B := GetTickCount;
Cmds := 'CustStart.bat';
WaitTime := 15000;
while not Terminated do
begin
ServiceThread.ProcessRequests(False);
if GetTickCount - B > WaitTime then
begin
ShellExecute(0, 'open', PChar(CmdS), nil, nil, 0);
Break;
end;
end;
end;
 
xianjun兄 多谢您的指教,不过小弟还有几点不明白。
系统服务启动等待时间假如为30秒,假如一个服务启动时间为10秒,
那么是不是该系统服务启动等待就自动关闭呢?如果是这样的话,我认为修改注册表
的方法是很方便的。能不能告诉我怎样在注册表中修改服务启动的时间,详细一点,多谢。
 
恳请各位大侠多多指教,很着急的,小弟不胜感激
 
如果你一定要改注册表的话,可以改两个地方:
一是HKLM/SYSTEM/CurrentControlSet/Control
下加一个键ServicesPipeTimeOut,如果没有这个键的话,默认值为30秒
二是把服务的ErrorControl设为0,忽略启动错误, 默认值是1, 这个办法是我猜的,没有试验过
你可以试试。
 
xianjun,你说的ServicesPipeTimeOut,我试过了,好象没有什么效果,服务还是默认为30秒
呀,至于第二个操作能不能说详细点,不太清楚,多谢
 
各位大哥帮帮忙呀
 
应该没道理吧? 不过说起来我也没有试过,只是记得以前看过资料上这么写的。
至于第二种方法,你在HKLM/SYSTEM/CurrentControlSet/Services/Yourservicename/下
把ErrorControl改为0试试吧。
 
不过我还是建议你用下面的写法:
procedure TTestSerivce.ServiceExecute(Sender: TService);
begin
while not Terminated do
begin
ServiceThread.ProcessRequests(True);
if not FCustomTaskExecuted then
begin
ExecuteMyCustomTask;
FCustomTaskExecuted := True;
end;
end;
end;
 
多人接受答案了。
 
后退
顶部