Как разработать .Net сервисы, когда вы не вошли в систему как администратор - PullRequest
3 голосов
/ 15 ноября 2010

Есть ли простой способ разработки сервисов в .Net, когда я не работаю от имени администратора? Есть пара проблем, с которыми я столкнулся. Прежде всего, при отладке нельзя просто нажать клавишу F5 в Visual Studio, так как в ней говорится, что сначала необходимо установить службы, а затем запустить их из инструмента администратора служб. Проблема в том, что без прав администратора я не могу создавать или контролировать сервисы. Мы используем Windows Server 2008 с AD для управления нашими пользователями. Есть ли определенный набор прав, которые я могу дать пользователям, чтобы они могли добавлять / удалять / запускать / останавливать службы? Что если мы хотим, чтобы разработчики обращались только к сервисам, которые они сами создали? Кроме того, после запуска службы, каков наилучший способ ее отладки. Если служба запущена и уже запущена, Visual Studio может подключиться к уже запущенному процессу, есть ли лучший способ, чтобы отладка могла начаться с точки входа службы?

Ответы [ 3 ]

1 голос
/ 15 ноября 2010

Вашим пользователям требуется разрешение для входа в систему как услуга.

Использование средств администрирования, локальной политики безопасности, локальных политик, назначения прав пользователя.

Добавьте своих пользователей в список в разделе «Вход в систему как услуга».

Вы не можете ограничить это право конкретными услугами.

Для отладки - одна хитрость, которую я использовал, - это добавить Sleep(20000); в раннюю логику, чтобы дать отладчику время для подключения. Вы должны убедиться, что ваша служба постоянно сообщает Service Control Maanger, что она активна (ServiceStatus = SERVICE_START_PENDING), или что она будет считаться мертвой и убитой.

1 голос
/ 15 ноября 2010

Kibbee,

Это на самом деле проблема, с которой я сам столкнулся. Самый простой способ обойти проблемы Visual Studio - это создать приложение, которое работает поверх уровня обслуживания. Это может быть простое консольное приложение, которое выполняет вызовы так же, как служба. Если все сделано правильно, это будет работать идентично сервису, фактически не являясь сервисом, что позволит вашим разработчикам правильно тестировать и отлаживать.

На самом деле вы можете дать пользователям возможность запускать службу, не будучи администратором, теперь, можете ли вы изолировать их от определенных служб, я не уверен.

1 голос
/ 15 ноября 2010

При работе со службами я склоняюсь к созданию консольного приложения для запуска кода во время разработки. Это означает, что вы должны иметь сервис в качестве тонкого слоя над кодом, который выполняет работу, поэтому вы можете вызывать этот код из своего консольного приложения, но в любом случае это неплохая идея.

Я знаю, что это не совсем отвечает на ваш вопрос, но, надеюсь, может быть полезным!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...