为什么TService上还没有描述属性?

时间:2013-03-19 02:06:43

标签: delphi service delphi-xe2 vcl

在Delphi的VCL中,Description上从未有过TService属性,这一直很奇怪。直到今天,Delphi XE2还没有它。这是一个如此简单和常见的事情,我想知道它为什么不存在。

我知道如何自己创造它,但我的观点是我不应该这样做。我想知道为什么Description服务没有内置到Delphi的VCL中有任何技术原因?因为它们似乎很容易实现。

2 个答案:

答案 0 :(得分:9)

设置它需要在XP& S中引入的ChangeServiceConfig2 API函数。 Win2003,Delphi中的服务类是在此之前编写的,很长一段时间以来,Windows NT4和2000都是Delphi RTL的基准。

另外由于某些未知原因,Borland(及其继承者)不利于在Windows API函数上使用动态绑定,更喜欢静态绑定到DLL或更晚但非可选绑定(不要问我为什么,它不会对我而言,使用上一个函数需要将Win2003作为最低版本或使用动态绑定。

所以我不认为这是一个刻意的决定,但更多的是公司关于动态绑定和普通旧代码维护忽视/监督的政策的结果。

答案 1 :(得分:1)

你可以这样使用。

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;