Com 64位.Net应用程序中的tlbinf32.dll
似乎没有64位版本的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的“组件服务” 打开“
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+应用程序创建对象,所以它应该在不改变代码的情况下工作