Click here to Skip to main content
15,897,518 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
This desktop app is trying to use a Third party TypeLib in vb.net and when trying to instantiate this object:
VB
Dim mycalWWList As New CALWorkitemWorkstepList


This error is produced:
Retrieving the COM class factory for component with CLSID{{F86DE171-2A5B-11CF-A2A6-08005AC10759}} failed due to the following error: 80040154

Oleview of the type library shows this:
C#
[
  uuid(F86DE171-2A5B-11CF-A2A6-08005AC10759)
]
coclass CALWorkitemWorkstepList {
    [default] interface _ICALWorkitemWorkstepList;
};



I have read so much on this error and interoperability in general and so far
1.) retried "regtlib.exe"
2.) tried to regsvr32 any other .dll that shows up in procmon.exe but just produced the entry point not found error.
3.) tried tlbimp rather than just adding reference. tlbimp imported all with out error especially noting the coclass above.
4.) target x86.
4.) the legacy COM objects work fine in the vb6 application.

I have read all the similar posts here and nothing has help so far.

Would anyone have any further suggestions?
Posted
Updated 30-Nov-11 14:31pm
v2
Comments
[no name] 30-Nov-11 20:32pm    
EDIT: Updated "pre" tag

1 solution

0x80040154 is class not registered ...

I'd *guess* the proxy is unavailable

what have you got in HKLM_CLASSES/CLSID/F86DE171-2A5B-11CF-A2A6-08005AC10759?
 
Share this answer
 
Comments
Fingerstyler 30-Nov-11 21:06pm    
That CLSID won't be found in the registry.
barneyman 30-Nov-11 21:11pm    
there's your problem :)

Is the legacy code running on the same machine? If it is, then the legacy code is calling another clsid, if it's another machine, look at the registry key on THAT machine, and the should help you identify the DLL or EXE you're missing
Fingerstyler 1-Dec-11 10:55am    
The legacy code is running on the same machine.
Fingerstyler 1-Dec-11 11:45am    
You gave me the idea (ty barneyman) that i would search for the interface name that belongs to that guid in the registry. It was found in 2 places, however the CLSID has 1 digit different on the first part F86DE170. This leads be to believe that the legacy app does not care completely about the guid but maybe likes the "Data" field that contains the interface name????
Found in:
HKCR\Interface\
HKLM\SOFTWARE\Classes\Interface\

What to do??
barneyman 1-Dec-11 18:02pm    
The UUIDs under the Interface hive are the IIDs of the Interface itself, and under them are the CLSIDs of the proxies for the interface ...

It sounds like the legacy app is NOT using the F86DE171... clsid

I'd try two things ...

1. do a search through the HKCR\CLSID hive for the DLL name that hosts the class, and see what CLSID that turns up

2. Run ProcessMonitor (sysinternals.com) on the legacy app, and watch for its registry reads in HKCR/CLSID

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
Top Experts
Last 24hrsThis month


CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900