tlbinf32.dll in a 64bits .Net application

3k Views Asked by At

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

There are 1 best solutions below

3
On BEST ANSWER
  • 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:

enter image description here

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.