2008-10-31 82 views
16

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

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

因此:如何防止安装程序在真正不需要时调用UAC?另外,即使设置了位3,如何以编程方式请求UAC?

回答

6

不幸的是,Windows安装程序不提供一种方式来创建可以每台机器和每用户安装,但只提示UAC对每台机器的情况下,单个封装中。问题是可以抑制UAC提示的位存储在SummaryInformation流中,并且在执行包时不可修改。

3
+0

请理解,我不是在谈论可执行文件的UAC - 没有setup.exe。相反,用户直接启动MSI文件。 – 2008-11-01 06:56:16

+0

提供的新参考... – saschabeaumont 2008-11-03 05:48:37

+0

这是一系列博客帖子的绝妙链接,讨论用户访问控制(UAC)与Windows Installer(.msi)技术的关系。感谢您的链接,@sascha! – dthrasher 2009-09-25 18:55:29

1

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

相关问题