Описание у службы Windows
При написании очередной службы для MS Windows, меня посетила мысль: «А почему у TService нет свойства «Description«?». При этом из своего опыта знаю, что подобное свойство есть у аналогичных компонент: у TNtService из библиотеки SvCom и даже у бесплатной компоненты TDDService от Arno Garrels, а у стандартного TService его нет даже под Delphi XE. Я понимаю, что описание — это не важно, но служба без описания выглядит на фоне других как-то неполноценно.
Метода для установки описания у TService я не нашел, поэтому ничего другого не оставалось, как добавить описание службе самому.
Оказалось, у MS Windows для этого есть специальная функция — ChangeServiceConfig2 (в advapi32.dll), которая изменяет дополнительные параметры конфигурации службы. Вместо реализации вызова ChangeServiceConfig2 на Delphi я сделал проще – в событии TService.ServiceAfterInstall записал описание службы напрямую в реестр:
Метода для установки описания у TService я не нашел, поэтому ничего другого не оставалось, как добавить описание службе самому.
Оказалось, у MS Windows для этого есть специальная функция — ChangeServiceConfig2 (в advapi32.dll), которая изменяет дополнительные параметры конфигурации службы. Вместо реализации вызова ChangeServiceConfig2 на Delphi я сделал проще – в событии TService.ServiceAfterInstall записал описание службы напрямую в реестр:
procedure TxyzSvc.ServiceAfterInstall(Sender: TService);
begin
With TRegistry.Create(KEY_READ or KEY_WRITE) do
Try
RootKey := HKEY_LOCAL_MACHINE;
If OpenKey(‘SYSTEMCurrentControlSetServices’ + Name, False) then
begin
WriteString(‘Description’, ‘XYZ Service’);
CloseKey;
end;
Finally
Free;
End;
end;