다음을 통해 공유


Unable to cast COM object of type 'System.__ComObject' to interface type

While launching Visual Studio 2012/2010 IDE, you might receive the below error message or VS IDE may just crash without any error message. I launched the devenv.exe in the debugger (https://msdn.microsoft.com/en-us/windows/hardware/gg463009) and took a crash dump (https://support.microsoft.com/kb/286350). You can also run the following command: cscript adplus.vbs -crash –sc "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe"

After debugging I found the below Call Stack and exception:

0:012> !pe
Exception object: 0ded29fc
Exception type:   System.InvalidCastException
Message:          Unable to cast COM object of type 'System.__ComObject' to interface type 'Microsoft.VisualStudio.OLE.Interop.IServiceProvider'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{6D5140C1-7436-11CE-8034-00AA006009FA}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).
InnerException:   <none>
StackTrace (generated):
    SP       IP       Function
    00000000 00000001 mscorlib_ni!System.StubHelpers.StubHelpers.GetCOMIPFromRCW(System.Object, IntPtr, IntPtr ByRef, Boolean ByRef)+0x2
    00000000 00000001 UNKNOWN!Microsoft.VisualStudio.OLE.Interop.IServiceProvider.QueryService(System.Guid ByRef, System.Guid ByRef, IntPtr ByRef)+0x2
    0B69A954 0F43C2D2 Microsoft_VisualStudio_Shell_11_0_ni!Microsoft.VisualStudio.Shell.ServiceProvider+<>c__DisplayClass1.<QueryService>b__0()+0x122
    0B69A994 0F43C0E4 Microsoft_VisualStudio_Shell_11_0_ni!Microsoft.VisualStudio.ErrorHandler.CallWithCOMConvention(System.Func`1<Int32>, Boolean)+0x34

StackTraceString: <none>
HResult: 80004002

0:012> !do 0ded29fc
Name:        System.InvalidCastException
MethodTable: 529b0670
EEClass:     52627fd0
CCW:         0a86e060
Size:        84(0x54) bytes
File:        C:\Windows\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll
Fields:
      MT    Field   Offset                 Type VT     Attr    Value Name
529bafb0  4000002        4        System.String  0 instance 00000000 _className
529b9e9c  4000003        8 ...ection.MethodBase  0 instance 00000000 _exceptionMethod
529bafb0  4000004        c        System.String  0 instance 00000000 _exceptionMethodString
529bafb0  4000005       10        System.String  0 instance 0ded2ac8 _message
529b3328  4000006       14 ...tions.IDictionary  0 instance 00000000 _data
529bb0f8  4000007       18     System.Exception  0 instance 00000000 _innerException
529bafb0  4000008       1c        System.String  0 instance 00000000 _helpURL
529bb350  4000009       20        System.Object  0 instance 0ded2e3c _stackTrace
529bb350  400000a       24        System.Object  0 instance 00000000 _watsonBuckets
529bafb0  400000b       28        System.String  0 instance 00000000 _stackTraceString
529bafb0  400000c       2c        System.String  0 instance 00000000 _remoteStackTraceString
529bc770  400000d       3c         System.Int32  1 instance        0 _remoteStackIndex
529bb350  400000e       30        System.Object  0 instance 00000000 _dynamicMethods
529bc770  400000f       40         System.Int32  1 instance -2147467262 _HResult
529bafb0  4000010       34        System.String  0 instance 00000000 _source
529ba3d4  4000011       44        System.IntPtr  1 instance        0 _xptrs
529bc770  4000012       48         System.Int32  1 instance -532462766 _xcode
5296de4c  4000013       4c       System.UIntPtr  1 instance  f43c2d1 _ipForWatsonBuckets
529a0798  4000014       38 ...ializationManager  0 instance 0ded2aac _safeSerializationManager
529bb350  4000001        0        System.Object  0   shared   static s_EDILock
    >> Domain:Value  03199208:NotInit  067cd0b0:NotInit  <<

The exception seems to indicate the crash was caused due to an interface not being found.  This indicates that something's wrong with proxy/stubs on his machine. At least IServiceProvider is failing. IE is usually the owner of the IServiceProvider proxy.
From the dump, it showed devenv.exe process crashed shortly after loading:  C:\Windows\SysWOW64\actxprxy.dll and C:\Windows\System32\mssprxy.dll

The issue turned out to be broken registration for IServiceProvider. The proxy-stub CLSID was wrong (it was referring to actxprxy.dll instead of ieproxy.dll on Windows 7 x64). Registering ieproxy.dll from an elevated cmd prompt resolved the issue.  regsvr32 "C:\Program Files (x86)\Internet Explorer\ieproxy.dll"  

On x86 systems,  regsvr32 "C:\Program Files\Internet Explorer\ieproxy.dll"