我正在尝试修复使用Visual Studio 2005安装项目的现有应用程序。
我们要求它在XP的有限用户帐户上工作,我们的应用程序是用C#编写的.Net 2.0。
它在设置过程中将密钥写入HKCU,但跳过用户界面选择“为所有人安装”与“只是我”的步骤。所以它默认为Everyone安装。
问题是,您在管理员帐户上安装,然后切换到受限帐户。这使得它执行失败的修复安装。如果我去任何其他管理员帐户,它的工作正常。
我的问题是,有限的帐户是否正在尝试读/写,将这些密钥放在HKCU的哪个位置?
HKEY_USERS中有一个神奇的地方适用于“每个人”吗?我不明白它是如何工作从管理员用户到另一个管理员用户。为了测试这个理论,我在有限的用户手动输入HKCU的密钥,它仍然试图修复。
如果我知道“Everyone”密钥的位置,我只能通过自定义操作授予所有用户完全访问权限,因此受限制的帐户不会强制进行修复安装。
答案 0 :(得分:1)
是
HKEY_USERS\.DEFAULT\
你正在寻找的分支?
答案 1 :(得分:1)
没有“Everyone”HKCU
键这样的东西。 HKCU 按用户。 Windows Installer将始终尝试修复,除非每个人都可以访问原始MSI文件,否则它可能会失败。
基本上我经常遵循的经验法则是永远不要在安装期间写入HKCU
,而是在安装期间写入HKLM
,并且第一次运行应用程序然后创建相关的{{ 1}}键。
请参阅我在SO问题Launching a program in different creds or HKCU and installers上的回答,并查看ActiveSetup作为编写相关HKCU
配置的可行替代方案。