Error accessing COM components
c#, com, ms-word, office-2007
Solution
Problem solved!
I have previously installed Office 2010, so there are some inconsistences in Windows Registry. To fix them, open the `regedit` and find for the CLSID from the error.
You will find something like that for the second error:
HKEY_CLASSES_ROOT\Interface\{00020970-0000-0000-C000-000000000046}
With the subkeys:
- ProxyStubClsid
- ProxyStubClsid32
- TypeLib
Take a look at the `(Default)` and `Version` values inside of `TypeLib`.
Now find the node below, using the `(Default)` value as `<TypeLib ID>`.
`HKEY_CLASSES_ROOT\TypeLib\<TypeLib ID>\<version>`
As child of this elements you will find more than one element, one of then is the `Version` of the first registry. If you inspect the others elements, you will find that they point to nothing. Remove the others!!! It's solved!
Problem
I built an add-in for Microsoft Office Word. There isn't an issue using the add-in when Word is ran as Administrator, but when it's not ran as an Administrator, there are two common exceptions accessing Ribbon elements. The first Exception: ``` Unable to cast COM object of type 'System.__ComObject' to interface type 'Microsoft.Office.Core.IRibbonUI'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{000C03A7-0000-0000-C000-000000000046}' failed due to the following error: could not be found. (Exception from HRESULT: 0x80030002 (STG_E_FILENOTFOUND)). at Microsoft.Office.Core.IRibbonUI.InvalidateControl(String ControlID) ``` This error occurs when the Control is invalidated by the following code: ``` ribbon.InvalidateControl("control-id"); ``` And the second Exception: ``` Unable to cast COM object of type 'Microsoft.Office.Interop.Word.ApplicationClass' to interface type 'Microsoft.Office.Interop.Word._Application'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{00020970-0000-0000-C000-000000000046}' failed due to the following error: could not be found. (Exception from HRESULT: 0x80030002 (STG_E_FILENOTFOUND)). at Microsoft.Office.Interop.Word.ApplicationClass.get_Selection() ``` This error occurs on the last line of the following code: ``` object wdStory = Word.WdUnits.wdStory; object wdMove = Word.WdMovementType.wdMove; WrdApp.Selection.EndKey(ref wdStory, ref wdMove) ``` How can I fix this problem?