Служба или запущенная программа службой с правами администратора - PullRequest
0 голосов
/ 13 сентября 2011

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

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

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

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

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

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

Может кто-нибудь помочь, пожалуйста?

1 Ответ

0 голосов
/ 16 сентября 2011

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

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

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


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

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

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

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

...