【问题标题】:Privileged Access On Demand按需特权访问
【发布时间】: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


    【解决方案1】:

    有一种方法可以做到这一点,但它是在 Windows 7 上引入的,因此不适用于 Windows Vista。它与ALLUSERS 相关,但还需要指定新属性MSIINSTALLPERUSER。正确启用后,MSIINSTALLPERUSER 会覆盖Word Count summary property 的第 3 位,从而允许每个用户的安装不需要提升。自 InstallShield 2010 左右以来,InstallShield 就提供了对此的支持(如果您使用的是旧版本,请查看发行说明确定)。

    如果不支持此属性,就像在 Windows Vista 上一样,您可以要求提升,或者从不提升 MSI 内部。这反过来又需要以提升的权限启动每台计算机的安装(您描述的启动解决方法),并且将失去对“过肩”提升中的非提升用户的跟踪。

    另见:How can the behavior of my .msi on Windows Vista and Seven be so weird?

    【讨论】:

    • 感谢您的链接。这看起来像是我需要的可行解决方案。事实上,我能够让它部分工作。但是,我正在尝试将MSIINSTALLPERUSER 设置为自定义操作(vbscript),这似乎是错误的位置。有什么具体的位置应该设置吗?在卸载期间我需要在运行时获得特权访问... :(
    • 通过MSIINSTALLPERUSER 的每用户安装不会提升,期间。所以如果你需要海拔,你不能走这条路。我建议重新审视您的要求,因为提升而不提升是明显的冲突。
    • 我并不是要提升每个用户的安装量;如果被这样理解,我们深表歉意。
    【解决方案2】:

    【讨论】:

    • P.S.我通常不接受只指向我可以自己谷歌的链接的答案。这个看起来是个例外。
    • 有时有人解释得很好,我自己也说不出来。这将是一个很好的理解强化练习,你可以提供一个答案来概括你从那篇文章中学到的东西。我会为你投票。
    猜你喜欢
    • 2019-06-24
    • 1970-01-01
    • 1970-01-01
    • 2017-03-23
    • 2017-05-21
    • 1970-01-01
    • 1970-01-01
    • 2019-08-23
    • 1970-01-01
    相关资源
    最近更新 更多