Повышение Windows установщик в Vista
Vista требует повышенных прав для установщиков, которые устанавливают драйверы или другие системные элементы. У Pointsec есть один из этих установщиков, и проблема заключается в том, что сам установщик не запрашивает повышение прав, поэтому повышение должно быть предоставлено ему заранее.
При установке этого программного обеспечения на несколько компьютеров, отключающих UAC, установка программного обеспечения и последующее повторное включение UAC является довольно утомительным занятием. Способ, который заботился бы об UAC, был бы предпочтен.
Установщик представляет собой пакет MSI на сетевом ресурсе. У общего ресурса также есть профиль установки, который установщик должен найти и использовать при установке. Это прекрасно работает без UAC, но нам не удалось запустить его с UAC.
Моя главная проблема заключается в том, что при возврате процесса он теряет свой рабочий каталог. Таким образом, хотя ярлык msiexec с правильными параметрами и общим сетевым ресурсом в качестве рабочего каталога работает (т. Е. Запускается, но возникают ошибки из-за отсутствия повышения прав), запуск этого ярлыка "от имени администратора" жалуется на отсутствие пакета msi. Монитор процессов показывает, что msiexec пытается найти пакет из Windows\System32. Указание полного UNC-пути к пакету запускает установщик, но ему не удается найти файл профиля. Итак, как правильно поднять установщик Windows, который не запрашивает повышение прав?
3 ответа
В основном у вас плохо спроектированный установщик.
Можно попробовать установить для свойства ALLUSERS в таблице свойств значение 1 (используя Orca, найдите Orca.msi в SDK установщика Windows), что приведет к принудительной установке для каждой машины.
В этом случае установщик затем запросит повышение уровня в процессе установки ( именно так UAC + MSI должен работать), и все будет в порядке.
Пост Почему мой начальный каталог игнорируется, когда я поднимаю командную строку? на блоге Раймонда Чена может быть актуальным здесь.
Я также знаю, что некоторые эвристики повышения являются очень упрощенными, например, если файл называется "setup" или "install", он будет запрашивать повышение прав. Я не могу найти свой источник для этого в данный момент.
Не очень технический ответ, но, возможно, он будет полезен.
Один из подходов состоит в том, чтобы запустить командную строку с повышенными правами, изменить там рабочий каталог и затем запустить установщик оттуда. Все, что запускается с повышенным cmd.exe, само по себе является повышенным.