【问题标题】:VS 2005 Setup - HKCUVS 2005 设置 - HKCU
【发布时间】:2009-11-11 22:02:59
【问题描述】:

我正在尝试修复使用 Visual Studio 2005 安装项目的现有应用程序。

我们要求它在 XP 的有限用户帐户上工作,我们的应用是用 C# 为 .Net 2.0 编写的。

它在设置过程中将密钥写入 HKCU,但跳过了选择“为所有人安装”而不是“仅我”的 UI 步骤。所以它默认为所有人安装。

问题是,您使用管理员帐户安装,然后切换到受限帐户。这使它执行失败的修复安装。如果我去任何其他管理员帐户,它工作得很好。

我的问题是,将受限帐户尝试读/写的 HKCU 的这些密钥放在哪里?

HKEY_USERS 中是否有一个神奇的地方适用于“所有人”?我不明白从管理员用户到另一个管理员用户是如何工作的。为了验证这个理论,我在受限用户上手动输入了HKCU中的密钥,它仍然尝试修复。

如果我知道这个“Everyone”键在哪里,我可以通过自定义操作向所有用户授予完全访问权限,这样受限帐户就不会强制进行修复安装。

【问题讨论】:

    标签: c# visual-studio-2005 windows-installer installation


    【解决方案1】:

    没有“所有人”HKCU 键这样的东西。 HKCU 是每个用户。 Windows Installer 将始终尝试修复,除非每个人都可以访问原始 MSI 文件,否则它可能会失败。

    基本上,我始终遵循的经验法则是在安装过程中永远不要写信给HKCU,而是在安装过程中写信给HKLM,当应用程序第一次运行时,我会创建相关的HKCU 密钥。

    查看我对 SO 问题 Launching a program in different creds or HKCU and installers 的回答并查看 ActiveSetup 作为编写相关 HKCU 配置的可行替代方案。

    【讨论】:

    • 我们自己找到了这个解决方案。我们将在首次运行时为每个用户从文件中提取设置并将它们放入 HKCU。如果它是一个新应用程序,我们将避免完全使用注册表,而只使用 vista-uac-safe 应用程序数据文件夹中的文件。
    【解决方案2】:

    HKEY_USERS\.DEFAULT\  
    

    你要找的分支?

    【讨论】:

    猜你喜欢
    • 2014-12-24
    • 2017-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多