有些电脑报错,有些电脑正常。
环境:VS WinForm程序, Office
WinForm程序操作Word时报错,错误:
System.InvalidCastException: 无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类
型“Microsoft.Office.Interop.Word._Application”。此操作失败的原因是对 IID 为“{00020970-0000-0000-C000-00000000
0046}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 不支持此接口 (异常来自 HRESULT:0x80004002 (E_NOINTERFACE))。
原因:
1,安装了多版本的Office
2,安装过WPS后没正常卸载
3,.......
解决办法(以win7 x64, Office 2007 例):
注册表位置
64bit Office:
HKEY_CLASSES_ROOT\WOW6432Node\Interface\[00020970-0000-0000-C000-000000000046]\TypeLib
32bit Office:
HKEY_CLASSES_ROOT \Interface\[00020970-0000-0000-C000-000000000046]\TypeLib
1.我这是x64 所以在HKEY_CLASSES_ROOT\WOW6432Node\Interface\[00020970-0000-0000-C000-000000000046]\TypeLib 中查看信息
key:{00020905-0000-0000-C000-000000000046} ,Verison:8.4
2.用key在HKEY_CLASSES_ROOT\WOW6432Node\TypeLib\00020905-0000-0000-C000-000000000046查看信息
只保留对应版本项即可这里是8.4 ,其它的删除。
PS:灵活运用的话,先删除报错电脑上的注册表项,然后把正常的系统中相应的注册表项导入