在Vista上的Windows Installer中使UAC可选

时间:2008-10-31 08:26:39

标签: windows-vista windows-installer

我已经编写了一个msi文件,在UI阶段提供“每用户”或“全部”安装选项,现在发现安装程序在Vista上失败了:

  • 如果我只是重复使用适用于XP的安装程序,即使是“每用户”安装,Vista也会触发UAC提示,使安装毫无意义
  • 如果我在PID_WORDCOUNT的第3位关闭UAC,Vista将不再调用UAC,所以即使用户有权安装到机器注册表中(例如),也不会发生特权提升,所以安装失败了。

那么:如何在不需要时阻止安装程序调用UAC?或者,即使设置了第3位,我如何以编程方式请求UAC?

3 个答案:

答案 0 :(得分:6)

不幸的是,Windows Installer没有提供创建单个程序包的方法,该程序包可以按机器和每个用户进行安装,但仅在每个机器的情况下提示UAC。问题是可以抑制UAC提示的位存储在SummaryInformation流中,并且在程序包执行时不可修改。

答案 1 :(得分:3)

答案 2 :(得分:1)

我通过在MSI包中设置PID_WORDCOUNT的第3位来关闭UAC。我可以为“ALLUSERS”和“PER-USER”安装它,也可以在VISTA机器上的两种模式下为HKLM写入。 您是否必须在安装期间为特权用户获取UAC弹出窗口?