Дизайн текущего приложения, над которым я работаю, обращается к службе WCF, размещенной в службе Windows, которая извлекает данные и сохраняет их на жестком диске. Он соединяется с приложением форм Windows, которое будет взаимодействовать со службой WCF. Одно из требований заключается в том, чтобы конечный пользователь мог перезапустить службу Windows через приложение Forms.
Итак, я предполагаю, что это можно сделать с помощью класса ServiceController ... но как насчет разрешений? Я не думаю, что мы можем (или должны) гарантировать, что приложение Windows запускается от имени администратора, а служба работает как сетевая служба.
Единственное, что я видел, что, по всей видимости, покрывает ситуацию, это запуск другой службы Windows, которую затем можно установить под учетной записью с более высокими разрешениями, которую можно вызвать для перезапуска целевой службы.
НО я не хочу добавлять столько сложности в проект, тем более что он должен был быть в бета-версии на прошлой неделе.
Так есть ли способ, которым я могу просто дать приложению Forms необходимые разрешения для перезапуска конкретной службы-компаньона?
Следующий вопрос не стоит на месте, мы могли бы сделать так, чтобы служба работала на сервере, а не на той же машине, что и приложение. Не сделает ли это возможным, чтобы приложение Forms могло перезапустить службу? Если это так, я могу выступать за сокращение функции ...
Да, и следует отметить, что целевыми платформами являются WinXP и Win7 с .NET4.