9

DelphiのVCLにDescriptionプロパティが存在しないことは常に不思議です。TService今日でも、DelphiXE2にはまだありません。それはとても単純でありふれたことなので、なぜそこにないのか疑問に思います。

私はそれを自分で作成する方法を知っていますが、私のポイントは私がそうする必要はないということです。DescriptionDelphiのVCLにサービスが組み込まれていないという技術的な理由があるのではないかと思いました。彼らが実装するのはとても簡単に思えるからです。

4

2 に答える 2

10

設定には、XP & Win2003 で導入された ChangeServiceConfig2 API 関数が必要であり、Delphi のサービス クラスはそれ以前に記述されており、長い間、Windows NT4 および 2000 が Delphi RTL のベースラインでした。

また、なんらかの理由で、Borland (および後継者) は、Windows API 関数での動的バインディングの使用に反対しており、DLL への静的バインディング、または遅いがオプションではないバインディングのいずれかを好みます (理由は聞かないでください。私には意味がありません)。 )、以前の機能を使用するには、最小バージョンとして Win2003 を使用するか、動的バインディングを使用する必要がありました。

したがって、それは意図的な決定ではないと思いますが、動的バインディングに関する会社のポリシーと、単純な古いコードの保守の無視/見落としの結果です。

于 2013-03-19T04:07:13.507 に答える
2

そんな使い方ができます。

procedure TMyService.ServiceAfterInstall(Sender: TService);
var
  Reg: TRegistry;
begin
  Reg := TRegistry.Create(KEY_READ or KEY_WRITE);

  try
    Reg.RootKey := HKEY_LOCAL_MACHINE;
    if Reg.OpenKey('\SYSTEM\CurrentControlSet\Services\' + Name, false) then
    begin
      Reg.WriteString('Description', 'All details you can write to here.');
      Reg.CloseKey;
    end;
  finally
    Reg.Free;
  end;
end;
于 2021-03-27T23:21:55.603 に答える