C# 使用Microsoft.office.interop时打印错误

C# 使用Microsoft.office.interop时打印错误,c#,visual-studio,interop,office-interop,C#,Visual Studio,Interop,Office Interop,我通常是通过我在Office 2013(Word)中使用interop用C#开发的应用程序进行打印的。然后我安装了Office2007的版本,从那以后,它就不再工作了。这是我的一个例外: 无法在接口类型“Microsoft.Office.Interop.Word.\u Application”中转换类型为“Microsoft.Office.Interop.Word.ApplicationClass”的COM对象。此操作失败,因为对IID接口“{00020970-0000-0000-C000-00

我通常是通过我在Office 2013(Word)中使用interop用C#开发的应用程序进行打印的。然后我安装了Office2007的版本,从那以后,它就不再工作了。这是我的一个例外:

无法在接口类型“Microsoft.Office.Interop.Word.\u Application”中转换类型为“Microsoft.Office.Interop.Word.ApplicationClass”的COM对象。此操作失败,因为对IID接口“{00020970-0000-0000-C000-0000000000 46}”的COM组件的QueryInterface调用由于以下错误而失败:加载类型为的库/DLL时出错。(来自HRESULT的异常:0x80029C4A(类型为E)


我无法解决这个问题,如果有人能帮助我,我感谢你。

所以发生的事情是,你有一个更高版本的空注册表项,因为它总是选择最高版本,所以它会选择空版本

因此,您需要进入注册表并删除空版本。要执行此操作,请单击windows图标,然后键入regedit并按enter键。然后,您应该看到注册表编辑器进入文件夹
HKEY\U CLASSES\U ROOT
中找到文件夹
TypeLib
,并尝试定位键
{00020905-0000-0000-C000-0000000000-46}
(这是Interop.Word键)


既然你在里面,你应该至少有2个文件夹在里面。它们应该命名为8.X,如果你点击其中一个,你会在右边看到它包含了什么,它只有一行以开头(默认)。该文件夹是您需要删除的空文件夹。通常最高的文件夹是您需要删除的文件夹,因此在8.6和8.7之间,您应该删除8.7。

您是否卸载了Office 2013版本?我已经卸载了两次,重新安装我也遇到了类似的问题,解决方案是,使用多个office版本会导致需要删除的注册表项为空。您知道如何检查注册表项吗?不,请您解释一下,我尝试了一些在论坛中找到的解决方案,但没有成功…我阅读的论坛,所有问题都指向注册表项问题,但我无法解决我缺少一个键,而不是多个键。如何添加相关的关键人员?