о запуске приложения, которое требует прав администратора на заблокированной учетной записи пользователя - PullRequest
1 голос
/ 24 марта 2011

У меня есть приложение Winforms, которое работает под стандартной учетной записью пользователя (т. Е. Учетная запись пользователя входит в систему, приложение работает под этим именем пользователя). Однако этому приложению необходимо выполнить некоторые действия (одним из них является запись в реестр), для которых требуются права администратора, и перезапустить службу (проблема, которую я хочу избежать, заключается в следующем: Контроллер службы не может запустить службу - Доступ запрещен ).

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

Ответы [ 2 ]

0 голосов
/ 24 марта 2011

Что я делаю в этом случае:

Для службы используйте этот инструмент, чтобы разрешить запуск / остановку для вашей ограниченной группы учетных записей или полномочий пользователей: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=e8ba3e56-d8fe-4a91-93cf-ed6985e3927b&displaylang=en И немного о том, как использовать:http://ss64.com/nt/subinacl.html

Что касается реестра, вам необходимо найти соответствующий раздел реестра> щелчок правой кнопкой мыши> разрешения> «Полный доступ» для группы «Пользователи» или имя конкретной «ограниченной» группы, которая требуетсяэти измененные разрешения.

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

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

Если вам нужно больше рук на рабочем примере, дайте мне знать, и я, вероятно, могу что-то скинуть.

0 голосов
/ 24 марта 2011

У вас может быть вспомогательный процесс администратора (Второй исполняемый файл), который запускается от имени администратора через файл манифеста.

Тогда ваше обычное приложение может быть запущено под ограниченным пользователем, но когда вы хотите выполнить задачи администратора, вы запускаете вспомогательный процесс через класс Process. Windows должна запросить повышение прав (для администратора) ПРОСТО для выполнения задач, которые вы хотите.

...