Работа автоматической защиты в сервисе (сборка .NET)

Здравствуйте!

возникла следующая проблема: есть защищенная автоматической
защитой сборка .NET (exe файл), имеется возможность запуска сборки как приложения,
так и в виде службы Windows. при вставленном ключе (если важно, используется Sign)
все работает нормально, но при вытащенном ключе при попытке перезапуска службы
процесс перезапуска в SCM "замерзает" со статусом "Останавливается", процесс в памяти
висит, но ничего не происходит, сообщений в журнале никаких, служба признаков жизни
не подает, ситуация решается только перезагрузкой системы (возврат ключа обратно не помогает)

Re: Работа автоматической защиты в сервисе (сборка .NET)

Добрый день, trkeast.

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

Такое приложение-сервис нужно перезащитить с использованием опции - /SILENT - .Net-автозащиты.
Подробнее про эту опцию и все остальные можно прочитать в нашем руководстве пользователя.

Re: Работа автоматической защиты в сервисе (сборка .NET)

вся проблема в том, что при указании опции /SILENT не остается
никаких следов после завершения процесса, попробовал совместить
вместе с /EXCEPT, но результат тот же - при отсуствии ключа
процесс через некоторое время умирает, при этом в event log по
прежнему ничего нет,может есть какой-то способ не останавливать
выполнение кода, находящегося под автоматической защитой?

Re: Работа автоматической защиты в сервисе (сборка .NET)

trkeast пишет:

может есть какой-то способ не останавливать
выполнение кода, находящегося под автоматической защитой?

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

Тут не совсем понятно, для чего нужно оставлять рабочим такой сервис, если ключа нет?

Re: Работа автоматической защиты в сервисе (сборка .NET)

Антон Тихиенко пишет:

Тут не совсем понятно, для чего нужно оставлять рабочим такой сервис, если ключа нет?

ну собственно оставлять его и не нужно, нужно диагностировать
причину, почему сервис не работает, т.е. в случае срабатывания защиты
у меня нет информации почему не работает сервис: или
ключ выдернули/повредили или что-то с самой программой
и если сервис в нормальном состоянии пишет в eventlog, то
при сработавшей защите он это делать не может

я так понимаю самым простым выходом будет вынести всю функциональную часть
в отдельную сборку, которую и стоит защитить автоматической защитой с
параметрами /SILENT и /EXCEPT,
и в отдельной сборке держать механизмы управления запуском,
с отлавливанием исключений защиты?

Re: Работа автоматической защиты в сервисе (сборка .NET)

trkeast пишет:

я так понимаю самым простым выходом будет вынести всю функциональную часть
в отдельную сборку, которую и стоит защитить автоматической защитой с
параметрами /SILENT и /EXCEPT,
и в отдельной сборке держать механизмы управления запуском,
с отлавливанием исключений защиты?

На сегодняшний день, да, можно использовать подобные методы.
Идею записи в eventlog событий срабатывания механизмов защиты примем во внимание.