1

Способ автозащиты сервисов (служб) Windows

Так как службы не взаимодействуют с рабочим столом, пользователь не сможет увидеть сообщение о том, что ключ отсутствует. Процесс службы "зависнет" на невидимом сообщении в ожидании реакции пользователя.

Применяем ключ /SILENT.

В этом случае служба просто тихо "умрет" (или изначально не запустится, если ключа нет), и все.
Возможно (если в настройках службы будет так задано), служба будет перезапущена операционной системой, и этот цикл (старт-поиск ключа-завершение) будет повторяться до тех пор, пока не будет найден ключ.
В любом случае, пользователь не будет знать причину отсутствия взаимодействия с сервисом.

Возможно, спасет ключ /EXCEPT ("Генерировать исключение при проблемах с ключом"). Поймав исключение, приложение сможет что-то сделать осмысленное.
Подскажите, пожалуйста, каков алгоритм генерации такого исключения и пример его обработки.

И, если можно, пример обработки такого исключения для Delphi (например). Или ссылку на документацию, где есть такой пример.

Спасибо.

2

Re: Способ автозащиты сервисов (служб) Windows

Здравствуйте, vlad-mal.

Опция /EXCEPT предназначена для .Net-приложений и с её помощью можно обрабатывать подобные ситуации.

Для Native-автозащиты такого функционала нет и все события работы с электронным ключом нужно обрабатывать при помощи Guardant API, а автозащиту приложения выполнять без привязки к ключу.

3

Re: Способ автозащиты сервисов (служб) Windows

Антон, спасибо за ответ.