在我们的安装包中,用户(不一定是管理员)可以选择为当前用户(CU)或所有用户(AU)安装我们的应用程序。当选择CU时,自定义动作(即VB脚本)在HKCU注册表中写入某些内容。另一方面,当选择AU(对于管理员)时,相同的脚本将相同的内容写入HKLM。特权访问点需要
这在WinXP及以下版本中都很好。但是对于Win7来说,这是由于UAC造成的一个问题 - 正如你所想象的那样。用户始终可以在EXE文件上执行右键单击 - >以管理员的身份运行或暂时关闭UAC,但这不能满足原来的要求,即普通用户不需要提升即可运行安装程序。
我已经试过的解决方法是设置需要管理员权限项目属性为是。但如上所述,这不适用于普通用户。
有没有办法请求海拔点播?我在想,如果用户选择AU,那么在执行安装程序之前,我不会在双击程序时询问高程。请参阅我在以下代码段中的评论:
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
PS我一般不接受的答案,只是指向我一个链接,我可以,否则谷歌自己这 –
有时候有人解释得很好,我自己也不能说得更好,这将是一个很好的理解强化练习,为你提供一个回答你从那篇文章中学到的东西, d upvote它给你。 –