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

将COM引用注册到64位Windows 7计算机,com,Com,我正在编写一个C#程序,通过COM互操作与COM对象进行接口 我有一个第三方程序,在我执行应用程序时将自己注册为COM服务器。这在32位WindowsVista中运行良好,我可以很好地与interop交互。(单击“添加引用”时,引用将显示在Visual Studio的“COM”选项卡中) 但是,在我执行应用程序后,该引用不会显示在64位Windows 7计算机上的“COM”选项卡中。有没有想过,为什么会发生这种情况?实际上,我尝试使用regsvr32.exe手动注册应用程序,但也没有成功(错误消

我正在编写一个C#程序,通过COM互操作与COM对象进行接口

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


但是,在我执行应用程序后,该引用不会显示在64位Windows 7计算机上的“COM”选项卡中。有没有想过,为什么会发生这种情况?实际上,我尝试使用regsvr32.exe手动注册应用程序,但也没有成功(错误消息说“未找到入口点DllRegisterServer”)

只要它不显示在COM选项卡中,您就不能使用它。regsvr32.exe实用程序是用于DLL的,但听起来像是一个exe。如果它是DLL,则需要使用32位版本的regsvr32.exe注册,即c:\windows\syswow64中的版本。如果它是exe,则是让它注册自身的正常方法通过使用/regserver命令行选项运行它

Mumble.exe/RegServer

此外,如果这是一个DLL或EXE,而您没有64位代理/存根,则必须强制应用程序以32位模式运行。Project+属性,生成选项卡,平台目标=x86


如果所有其他操作都失败,您确实需要此程序供应商的支持。他们肯定会提供一个更新,该更新在64位操作系统上正常工作。如果他们不再存在,则始终可以在虚拟机中运行此更新。

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

REGASM AssemblyName.dll /tlb:AssemblyName.tlb

<>你可能会发现这是有用的,因为我需要重新编译并为C++服务器构建64位代理存根,当试图使用/ReGeServer登记服务器时,它总是失败。这里是,MISROCSOFF的线程帮助我解决了这个问题。基本上,您需要使用这个/RealServer,但要通过线程在得到上面的答案后,你就会陷入这种情况


非常感谢,Hans,这非常有用。我试图注册的文件实际上是.exe,难怪我不能注册。我已经设置了平台target=x86。Mumble.exe在哪里?我如何获得它?我不能帮你找到.exe,你不知道吗?这是你在作品中提到的第三方程序。哦,对不起,我可能是我明白你的意思。我以为你提到了一个名为Mumble.exe的工具——这可能只是你的例子。当然,我会知道第三方程序的位置。下次我会叫它Foo.exe:)