delphi - 更改服务名称运行时

时间:2018-04-19 12:44:42

标签: delphi service

我在Delphi 10.2.3中创建了一个服务,它运行良好。

为了调试它,我在dpr文件中添加了这个:

{$ifdef DEBUG}

    try
      // In debug mode the server acts as a console application.
      WriteLn('MyServiceApp DEBUG mode. Press enter to exit.');

      // Create the TService descendant manually.
      EseguiProcessiClient := TEseguiProcessiClient.Create(nil);

      // Simulate service start.
      EseguiProcessiClient.ServiceStart(EseguiProcessiClient, MyDummyBoolean);

      // Keep the console box running (ServerContainer1 code runs in the background)
      ReadLn;

      // On exit, destroy the service object.
      FreeAndNil(EseguiProcessiClient);
    except
      on E: Exception do
      begin
        Writeln(E.ClassName, ': ', E.Message);
        WriteLn('Press enter to exit.');
        ReadLn;
      end;
    end;
  {$else}
    if not Application.DelayInitialize or Application.Installing then
      Application.Initialize;
    Application.CreateForm(TEseguiProcessiClient, EseguiProcessiClient);
  Application.Run;
  {$endif}

这样,我可以毫无问题地调试它。

但是现在,我想在运行时更改服务名称,所以我遵循了这个答案:

https://stackoverflow.com/a/612938/1032291

但是现在,当我在发布模式下运行服务时,如果我保留原始名称(EseguiProcessiClient)我没有问题,但是如果我将名称更改为其他名称,则服务无法启动。看起来它会进入ServiceCreate事件,但不会进入ServiceStart事件。

有人可以给我一些帮助吗?

1 个答案:

答案 0 :(得分:1)

好的,我自己解决了。正如我所说,问题是ImagePath。我必须使用sc create自己创建服务并手动添加参数。