При написании очередной службы для 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('\SYSTEM\CurrentControlSet\Services\' + Name, False) then
begin
WriteString('Description', 'XYZ Service');
CloseKey;
end;
Finally
Free;
End;
end;
Комментариев нет:
Отправить комментарий