[英]Delphi Windows service name conflict with project name
我有一個名為DataCapture.dpr的基本文件,
program DataCapture;
內。
然后,我不得不給服務本身加上另一個名稱,以避免名稱沖突:
TDataCaptureService = class(TService)
現在,當我注冊它時,該服務將在“ DataCaptureService”注冊表項下注冊,但是我想要:
如何實現呢?
命名沖突預防僅在設計時由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.