Delphi Windows服务名称与项目名称冲突

Pau*_*aul 1 delphi windows-services

我有一个名为DataCapture.dpr的基本文件

program DataCapture;
Run Code Online (Sandbox Code Playgroud)

内.

然后我必须给服务本身另一个名字,以避免名称冲突:

TDataCaptureService = class(TService)
Run Code Online (Sandbox Code Playgroud)

现在,当我注册它时,该服务在"DataCaptureService"注册表项下注册,但我想:

  1. 在"DataCapture"注册表项下注册它
  2. 保留DataCapture.exe文件名
  3. 保留DataCapture.dpr文件名

怎么做到这一点?

Ond*_*lle 6

命名冲突防止仅在IDE设计时强加.为了避免这种情况,您只需在运行时设置服务名称,例如OnCreate:

Name := 'DataCapture';
Run Code Online (Sandbox Code Playgroud)

或者,最重要的是,覆盖DoCreate方法,因为OnCreate它适用于外部事物:

procedure TDataCaptureService.DoCreate();
begin
  Name := 'DataCapture';
  inherited;
end;
Run Code Online (Sandbox Code Playgroud)