tlbinf32.dll in a 64bits .Net application

血红的双手。 提交于 2021-02-06 13:00:26

问题


It seems there is no 64 bits version of tlbinf32.dll, this (old) COM DLL is used to extract informations of COM components. (see this SO answer )

I need to access it from a 64 bits C# application. I did not manage to host it into a separate surrogate process, I'm still obtaining the exception REGDB_E_CLASSNOTREG . My code works for x86 platforms but I have to implement it also for 64 bits.

Can any one help me by providing a step by step procedure to launch it into a surrogate (Dllhost) - or maybe another way to use it ?

Do you know a better alternative to browse trough all methods, classes.. of a native COM Dll ?


回答1:


  • open Windows' "Component Services"
  • open nodes to "My Computer/COM+ Applications"
  • right-click, choose to add a new Application
  • choose an "empty application", name it "tlbinf" for example
  • make sure you choose "Server application" (means it will be a surrogate that the wizard will be nice to help you create)
  • choose the user you want the server application to run as (for testing you can choose interactive user but this is an important decision to make)
  • you don't have to add any role, not any user
  • open this newly created app, right-click on "Components" and choose to add a new one
  • choose to install new component(s)
  • browse to your tlbinf32.dll location, press "Next" after the wizard has detected 3 interfaces to expose

That's it. You should see something like this:

Now you can use the same client code and it should work. Note the performance is not comparable however (out-of-process vs in-process).

The surrogate app you've just created has a lots of parameters you can reconfigure later on, with the same UI. You can also script or write code (C#, powershell, VBScript, etc.) to automate all the steps above.



来源:https://stackoverflow.com/questions/42569377/tlbinf32-dll-in-a-64bits-net-application

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!