gpt4 book ai didi

com - 为什么 Regasm 将 ProgId 放入 HKEY_CURRENT_USER 中?

转载 作者:行者123 更新时间:2023-12-02 16:07:25 24 4
gpt4 key购买 nike

我有两个虚拟机,我希望在其中 (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 文件。

最佳答案

在较旧的设置上,HKEY_LOCAL_MACHINE 对于普通用户来说是可写的,但在较新的 Windows(例如 Windows 7)上则不然。可能取决于配置、用户帐户类型等。

注册类位于 HKEY_LOCAL_MACHINE\SOFTWARE\Classes(有时可写,如上所述)或 HKEY_CURRENT_USER\Software\Classes(始终可写)。两者都有效。第一种情况是压倒性的默认。

HKEY_CLASSES_ROOT实际上只是一个 View ,它合并了上述分支的内容。这就是为什么您会在两个不同的位置看到它。

RegAsm 似乎足够聪明,可以检测 HKLM 的只读条件,并自动选择 HKCU。或者您的虚拟机之间存在一些不同的配置设置。

主要区别在于,在第二种情况下,该 dll 只能在您注册它的用户帐户下使用。您的服务可能在另一个帐户下运行,因此它无法在第二台计算机上加载 dll。

关于com - 为什么 Regasm 将 ProgId 放入 HKEY_CURRENT_USER 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10103209/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com