Служба или запущенная программа службой с правами администратора

Для обновления нашего программного обеспечения мы использовали программу обновления VB6 с уровнями обновлений и разными источниками обновлений. Он скопировал необходимые файлы из источников обновлений в локальное место назначения (C: \ program files \ company \ product).

Программы VB6 могут работать только с помощником службы (srvany или аналогичным) в качестве службы и не имеют достаточных прав для изменения или добавления новых файлов в заданную папку. Но даже программа .NET не имеет необходимых прав для этого, только если вы установите учетные данные администратора в службе.

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

Использование MSI / MSP невозможно из-за данных уровней обновления (разные пользователи с разными версиями программ и отчетов).

Мы пытались вызвать внешнюю программу из службы C # .NET с повышением прав, но никак ... Мы проверили некоторые советы и уловки с файлами манифеста или думали создать COM-объект, который мог бы иметь права администратора, но я думаю, что это неправильный путь.

Другая возможность - создать запланированную задачу, предоставив «максимальную опору». Но так ли это работает? Если задача должна запускаться после входа в систему и разные пользователи могут использовать этот компьютер, вы должны определить задачу для каждого пользователя ... Мы не знаем каждого входа в систему на клиентском компьютере, потому что они меняются очень часто.

Может кто-нибудь помочь?


person coupe62    schedule 13.09.2011    source источник


Ответы (1)


Чтобы запустить что-то с повышенными привилегиями, вам понадобится служба, работающая как локальная система, чтобы иметь необходимые права для доступа к программным файлам. Но сервис всегда работает и забирает память.

Вы можете создать запланированную задачу, которая начнется через определенный период времени. Однако я не уверен, что можно запустить задачу с повышенными правами без подтверждения UAC.

Манифесты также должны позволять запускать другое приложение с повышенными правами.


По сути, ваша программа обновления не нуждается в повышении: она может загружать файлы обновлений в ProgramData, который доступен для записи каждому пользователю. По завершении загрузки запускается программа установки, требующая прав администратора.

Firefox использует механизм автоматического обновления: при загрузке более новой версии он запрашивает повышение прав для применения обновления.

Apple Quicktime использует запланированную задачу для запуска средства обновления. Он представляет собой интерфейс, в котором пользователи могут выбрать, какие обновления они хотят установить. Он загружает файлы обновления, запрашивает повышение прав и затем применяет обновления.

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

person Alexey Ivanov    schedule 16.09.2011