Search code examples
comtlbinf32

tlbinf32.dll in a 64bits .Net application


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 ?


Solution

    • 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.