在Delphi的VCL中,Description
上从未有过TService
属性,这一直很奇怪。直到今天,Delphi XE2还没有它。这是一个如此简单和常见的事情,我想知道它为什么不存在。
我知道如何自己创造它,但我的观点是我不应该这样做。我想知道为什么Description
服务没有内置到Delphi的VCL中有任何技术原因?因为它们似乎很容易实现。
答案 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;