【发布时间】:2013-10-28 08:25:51
【问题描述】:
在我们的安装包中,用户(不一定是管理员)可以选择为当前用户 (CU) 或所有用户 (AU) 安装我们的应用程序。选择CU时,自定义操作(即VB脚本)在HKCU注册表中写入某些内容。另一方面,选择AU(对于管理员),相同的脚本将相同的内容写入HKLM。
这在 WinXP 及以下版本中都很好。但是对于 Win7,这是一个问题——正如你可以想象的那样——因为 UAC。用户始终可以对 EXE 文件执行 右键单击->以管理员身份运行 或暂时关闭 UAC,但这并不能满足普通用户不需要提升才能运行的原始要求安装程序。
我尝试过的解决方法是将 Require Administrative Privileges 项目属性设置为 Yes。但这不适用于上面提到的普通用户。
有没有办法请求提升按需?我在想,如果用户选择 AU,那么我不会在双击程序时询问海拔,而是在执行安装程序之前。在下面的 sn-p 中查看我的评论:
Sub AddRegistryKey(key, value)
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
If Session.Property("ALLUSERS") <> "1" Then
' Can I request for elevation at this point?
Session.Property("PathToRegistryKeys") = Session.Property("PathToRegistryKeysUser") ' HKCU
Else
Session.Property("PathToRegistryKeys") = Session.Property("PathToRegistryKeysAll") ' HKLM
End If
WshShell.RegWrite Session.Property("PathToRegistryKeys")&Session.Property("ProductCode")&"\"&key&"\", value, "REG_SZ"
End Sub
【问题讨论】:
标签: vbscript windows-installer installshield uac