Сделайте UAC необязательным в установщике Windows в Vista

Я написал файл msi, который предлагает выбор установки «для каждого пользователя» или «для всех» на этапе пользовательского интерфейса, и теперь обнаружил, что установщик не работает в Vista:

  • если я просто повторно воспользуюсь установщиком, который работает для XP, Vista вызовет запрос UAC даже для установки «для каждого пользователя», что сделает эту установку бессмысленной.
  • если я отключу UAC в бите 3 PID_WORDCOUNT, Vista больше не будет вызывать UAC, поэтому даже если у пользователя будет разрешение на установку в системный реестр (скажем), повышения привилегий не произойдет, поэтому установка терпит неудачу.

Итак: как я могу запретить установщику вызывать UAC, когда он на самом деле не нужен? В качестве альтернативы, как я могу программно запросить UAC, даже если установлен бит 3?


person Martin v. Löwis    schedule 31.10.2008    source источник


Ответы (3)


К сожалению, установщик Windows не позволяет создать единый пакет, который может устанавливать для каждой машины и пользователя, а только запрашивает UAC для каждой машины. Проблема в том, что бит, который может подавить запрос UAC, хранится в потоке SummaryInformation и не может быть изменен во время выполнения пакета.

person Rob Mensching    schedule 22.11.2008
comment
Спасибо за подтверждение. Есть ли для этого серьезная причина дизайна, или мы можем надеяться, что этот флаг когда-нибудь станет собственностью? - person Martin v. Löwis; 22.11.2008
comment
Я слышал, что MSI 5.0 что-то делает в этой области. Но для этого нам понадобится Win7. <вздох/> - person Rob Mensching; 13.01.2009

Попробуйте эту ссылку: UAC в заметках MSI: как создавать пакеты, которые работает как для стандартного пользователя, так и для отдельной машины?

person saschabeaumont    schedule 01.11.2008
comment
Поймите, я не говорю о UAC исполняемого файла - нет setup.exe. Вместо этого пользователи запускают файл MSI напрямую. - person Martin v. Löwis; 01.11.2008
comment
Это фантастическая ссылка на серию сообщений в блоге, в которых обсуждается, как контроль доступа пользователей (UAC) связан с технологией установщика Windows (.msi). Спасибо за ссылку, @sascha! - person dthrasher; 25.09.2009

Я отключил UAC, установив бит 3 PID_WORDCOUNT в моем пакете MSI. Я могу установить его для «ALLUSERS» и «PER-USER», а также записать для HKLM в обоих режимах на машинах VISTA. Обязательно ли во время установки получать всплывающее окно UAC для привилегированного пользователя?

person Community    schedule 19.08.2009
comment
Отключение этого бита у меня не помогло. Пользователи получат ошибки отказа в разрешении, даже если они являются членами группы администраторов. Только сам администратор смог успешно установить пакет. - person Martin v. Löwis; 19.08.2009