我正在构建一个使用Visual Studio 2008部署(安装)项目的安装程序。该项目具有“特权”启动条件,以便只有管理员才能运行它。它使用由第三方提供的合并模块来注册COM组件。 COM组件是通过一个.NET interop DLL公开的,而这个DLL又被我为其构建安装程序的程序使用。 (细节:这是一个安装QBFC框架的Intuit合并模块)。COM组件如何注册到一半?
安装完成后,COM组件无法加载。错误是“班级未注册”。但是当我进入注册表时,我可以看到所有正确的条目都在HKEY_CLASSES_ROOT\CLSID\{the class id}
之下 - 其中类ID与错误消息的类ID相匹配。如果我然后在管理模式下打开命令提示符并重新注册DLL服务器使用Regsvr32,一切都是固定的,但我看不到任何变化KEY_CLASSES_ROOT\CLSID
当我检查系统使用进程监视器得到类未注册的错误,我可以看到应用程序在尝试打开CLSID时收到“找不到名称”的错误,即使CLSID肯定存在(我有双重检查和三重检查)。我认为这必须与权限有关。另一种理论认为,“未注册的类”消息可能来自于依赖组件,但这并不能解释我在进程监视器中看到的内容。
所有这些测试结果来自Windows 7旗舰版32位操作系统。
你会采取什么步骤来解决这个问题的底部?
查看HKLM \ Software \ Wow6432Node \ Classes \ CLSID。 32位COM注册键的主页。 –
汉斯,这是一个很好的接触,但我忘了提及我的测试结果来自32位图像。 –
如果“32位图像”意味着一个32位的COM服务器,那么你一定想看看Wow6432Node。避免让我们猜测重要的细节,比如你是否在64位操作系统上运行它。 –