将COM引用注册到64位Windows 7计算机

时间:2010-07-30 19:54:30

标签: com

我正在编写一个C#程序,通过COM interop与COM对象进行交互。

我有一个第三方程序,在执行应用程序时将自己注册为COM服务器。这在32位Windows Vista中运行良好,我可以很好地与互操作接口。 (单击“添加引用”时),Visual Studio中“COM”选项卡中的引用显示在

但是,执行应用程序后,我的64位Windows 7计算机上的“COM”选项卡中没有显示该引用。有什么想法,为什么会这样?我实际上尝试使用regsvr32.exe手动注册应用程序,但它也无法正常工作(错误消息说“找不到入口点DllRegisterServer”)

3 个答案:

答案 0 :(得分:1)

只要它没有出现在COM选项卡中,您将无法使用它。 regsvr32.exe实用程序适用于DLL,但这听起来像是一个EXE。如果它是DLL,则需要使用32位版本的regsvr32.exe注册,该版本位于c:\ windows \ syswow64中。如果它是一个EXE,那么让它自己注册的正常方法是使用/ regserver命令行选项运行它。

  

Mumble.exe / RegServer

此外,如果这是您没有64位代理/存根的DLL或EXE,那么您必须强制您的应用程序以32位模式运行。 Project + Properties,Build选项卡,Platform Target = x86。

如果所有其他方法都失败了,那么你真的需要来自该程序供应商的支持。他们肯定会有一个可用的更新,经过验证可以在64位操作系统上正常运行。如果它们不再存在,那么在虚拟机中运行它总是有可能的。

答案 1 :(得分:1)

如果是托管dll,那么您可以尝试使用RegAsm

REGASM AssemblyName.dll /tlb:AssemblyName.tlb

答案 2 :(得分:0)

您可能会发现这很有用,因为我需要自己从C ++重新编译和构建COM服务器的64位代理存根,并且在尝试使用/ regserver注册服务器时它仍然失败。这是来自miscrosoft的线程帮助我解决了这个问题。基本上你需要使用它来代替/ RegServerPerUser,但如果你在上面的答案之后遇到这种情况,请通过这个帖子。

http://social.msdn.microsoft.com/Forums/en/vcprerelease/thread/11f01ceb-52a4-438f-b7ef-727ce7a3e191

相关问题