问题
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