Com 64位.Net应用程序中的tlbinf32.dll

Com 64位.Net应用程序中的tlbinf32.dll,com,tlbinf32,Com,Tlbinf32,似乎没有64位版本的tlbinf32.dll,此(旧)COM dll用于提取COM组件的信息。(见此) 我需要从64位C#应用程序访问它。 我没有将它托管到单独的代理进程中,我仍然获得异常REGDB\u E\u CLASSNOTREG。我的代码适用于x86平台,但我也必须为64位实现它 有谁能帮助我,提供一个逐步的过程,将它启动到代理(Dllhost)中,或者提供另一种使用它的方法 你知道一个更好的方法来浏览所有的方法和类吗。。本机COM Dll的设置? 打开Windows的“组件服务” 打开“

似乎没有64位版本的
tlbinf32.dll
,此(旧)COM dll用于提取COM组件的信息。(见此)

我需要从64位C#应用程序访问它。 我没有将它托管到单独的代理进程中,我仍然获得异常
REGDB\u E\u CLASSNOTREG
。我的代码适用于x86平台,但我也必须为64位实现它

有谁能帮助我,提供一个逐步的过程,将它启动到代理(
Dllhost
)中,或者提供另一种使用它的方法

你知道一个更好的方法来浏览所有的方法和类吗。。本机COM Dll的设置?

  • 打开Windows的“组件服务”
  • 打开“我的电脑/COM+应用程序”节点
  • 右键单击,选择添加新应用程序
  • 选择一个“空应用程序”,例如将其命名为“tlbinf”
  • 确保选择“服务器应用程序”(意味着它将是向导很乐意帮助您创建的代理)
  • 选择希望服务器应用程序以其身份运行的用户(对于测试,您可以选择interactive user,但这是一个重要的决策)
  • 您不必添加任何角色,也不必添加任何用户
  • 打开这个新创建的应用程序,右键单击“组件”,然后选择添加一个新应用程序
  • 选择安装新组件
  • 浏览到tlbinf32.dll位置,在向导检测到3个要公开的接口后按“下一步”
就这样。您应该看到如下内容:

现在您可以使用相同的客户机代码,它应该可以工作了。注:但性能不可比(过程外与过程中)


您刚刚创建的代理应用程序有许多参数,您可以稍后使用相同的UI重新配置。您还可以编写脚本或编写代码(C#、powershell、VBScript等)来自动执行上述所有步骤。

现在还不清楚您希望这里的任何人对此做些什么。找到替代方案并不困难,所有这些接口都可以在.NET中的System.Runtime.InteropServices.ComTypes命名空间中找到。您需要的唯一额外的东西是。我正在尝试动态地发现Com DLL的方法、参数、枚举和类。为此,
tlbinf32.dll
非常方便(参见上面提到的答案),System.Runtime.InteropServices.ComTypes名称空间要麻烦得多,因为我需要遍历所有IDispatch并使用需要封送的IntPtr。@Hans很抱歉指向tlbinf32.dll的API的链接错误,我删除了它。完美,简单、有效、清晰!它是否适用于我需要从x64调用的所有x86本机COM DLL?@Malick-某些DLL可能无法工作(例如,如果它们不能正确处理封送处理),但该原则对所有人都有效。至少对于VBA而言,这意味着CreateObject/Dim作为新的TLIApplication现在将使用64位COM+应用程序创建对象,所以它应该在不改变代码的情况下工作