delphi - Service does not start -
i created windows service delphi , used 2 method install, start , stop.
method 1
if install service using commandline
c:\myservice\serviceapp.exe /install
it installed , can start , stop in service console.
method 2
but if install same service different name using sc e.g.
c:\windows\system32>sc create myservice binpath= c:\myservice\serviceapp.exe
i see installed can not start service using service console
sc start myservice
when query using sc , result follows
c:\windows\system32>sc query myservice service_name: myservice type : 10 win32_own_process state : 2 start_pending (not_stoppable, not_pausable, ignores_shutdown) win32_exit_code : 0 (0x0) service_exit_code : 0 (0x0) checkpoint : 0x0 wait_hint : 0x7d0
up till using /install want install same service multiple times different names, got idea of using post. (how install windows service command line specifying name , description?) can explain difference of behavior between /install , sc?
you have clashed bug in tservice
implementation, see qc #79781. delphi not able start service if service name if different tservice.name
.
however, can avoid limitation adjusting tservice.name
before service started. 1 point tservice.oncreate
event. need know real name of service, need pass argument service exe (adding binpath
of sc create
command).
create service:
sc create myservice1 binpath= "c:\myservice\serviceapp.exe myservice1" sc create myservice2 binpath= "c:\myservice\serviceapp.exe myservice2"
adjust name:
procedure tmyservice.servicecreate(sender: tobject); begin if (system.paramcount >= 1) , not charinset(paramstr(1)[1], switchchars) name := paramstr(1); end;
this rudimentary method of argument parsing, ok example. if first argument doesn't start /
or -
, assumes it's supplied name.
remark:
another limitation of tservice
can't create services (using /install
) arguments in command line, because uses paramstr(0)
binpath
.
Comments
Post a Comment