我正在使用 Visual Studio 2008 部署(设置)项目构建安装程序。该项目具有“特权”启动条件,因此只有管理员才能运行它。它使用第三方提供的合并模块来注册COM组件。COM 组件通过 .NET 互操作 DLL 公开,而我正在为其构建安装程序的程序又使用该 DLL。(具体说明:这是一个安装 QBFC 框架的 Intuit 合并模块)。
安装完成后,无法加载 COM 组件。错误是“类未注册”。但是当我去注册表时,我可以看到所有正确的条目都在HKEY_CLASSES_ROOT\CLSID\{the class id}- 类 id 与错误消息的类 id 匹配的地方。如果我随后在管理模式下打开命令提示符并使用 Regsvr32 重新注册 COM 服务器的 DLL,一切都已修复,但我看不到任何更改KEY_CLASSES_ROOT\CLSID
当我在收到类未注册错误时使用进程监视器检查系统时,我可以看到应用程序在尝试打开 CLSID 时收到“未找到名称”错误,即使 CLSID 确实存在(我有双重和三重检查)。我认为这必须与权限有关。另一种理论是“类未注册”消息可能来自依赖组件,但这并不能解释我在进程监视器中看到的内容。
所有这些测试结果均来自 Windows 7 Ultimate 32 位操作系统。
你会采取什么步骤来解决这个问题?