我有两个我希望(Wix)安装我的软件的虚拟机。一个是 Windows XP SP2,另一个是 Windows XP SP1。他们都不使用域,并且他们都拥有具有管理员权限的本地用户 Administrator。
运行 RegAsm.exe 以在装有 SP3 的机器上注册 MyApp.dll 将我的 ProgId 放入文件夹中:
HKEY_CLASSES_ROOT\MyAppProgId
HKEY_LOCAL_MACHINE\Software\Classes\MyAppProgId
而在 SP2 机器上运行它会将它放在文件夹中:
HKEY_CLASSES_ROOT\MyAppProgId
HKEY_CURRENT_USER\Software\Classes\MyAppProgId
我在尝试从服务加载 MyApp.dll 时发现了这一点。从 RegAsm.exe 和 Heat.exe 生成的注册表文件似乎都在更新 HKEY_CLASSES_ROOT。
有谁知道这可能是什么原因?
编辑:我最终通过直接写入 HKEY_LOCAL_MACHINE 而不是 HKCR 来解决这个问题 - 这涉及手动编辑生成的 .reg 文件或 .wxs 文件。