簡體   English   中英

Delphi Windows服務名稱與項目名稱沖突

[英]Delphi Windows service name conflict with project name

我有一個名為DataCapture.dpr的基本文件,

program DataCapture;

內。

然后,我不得不給服務本身加上另一個名稱,以避免名稱沖突:

TDataCaptureService = class(TService)

現在,當我注冊它時,該服務將在“ DataCaptureService”注冊表項下注冊,但是我想要:

  1. 要在“ DataCapture”注冊表項下注冊
  2. 保留DataCapture.exe文件名
  3. 保留DataCapture.dpr文件名

如何實現呢?

命名沖突預防僅在設計時由IDE強制實施。 為了避免這種情況,您可以在運行時簡單地設置服務名稱,例如在OnCreate事件中:

Name := 'DataCapture';

或最好是重寫DoCreate方法,因為OnCreate是用於外部事物的:

procedure TDataCaptureService.DoCreate();
begin
  Name := 'DataCapture';
  inherited;
end;

您無法實現所有三個願望-您必須犧牲一些東西。 在這種情況下,將項目的名稱更改為其他名稱,然后在生成后將EXE名稱更改為所需名稱。 Delphi編譯器根本不允許相同的標識符使用兩次。


也有另一種選擇。 默認情況下,從Delphi編譯的服務具有自己的/install /uninstall參數,您可以調用它們,它們在內部使用您的Name作為服務。 但是,您可以忽略它,而使用所需的任何名稱通過WinAPI在外部進行安裝(從而為您的新名稱生成一個對應的注冊表項)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM