如何在c#中获取所有已安装的Ms Office(Word,Excel,Power Point)实例?

时间:2014-09-08 07:29:24

标签: ms-office

我正在开发Win表单应用程序。在我的应用程序中,用户可以从我的应用程序中启动不同版本的MS office软件(Word(2010,2013),Excel(2010,2013),Power point(2010,2013))。

我尝试了什么:

我使用过Microsoft.Office.Interop.Word.Application,下面是示例

Microsoft.Office.Interop.Word.Application appVersion = new Microsoft.Office.Interop.Word.Application();
string version = appVersion.Version.ToString();

但问题是它只返回1个版本设置为默认值,我需要安装在我系统中的所有Ms字实例。

问题: 如何在c#中获取所有已安装的Ms Office(Word,Excel,Power Point)实例?

1 个答案:

答案 0 :(得分:0)

使用您的解决方案,您只能获得最后安装的实例。 这是因为最后注册的COM-Object将回答。

最后一个存储在此注册表项中: HKEY_CLASSES_ROOT \ Word.Application 在这些键上至少有一个文件夹" CLSID"这指向了对象。

所有办公室版本都具有相同的名称和班级ID。 通过COM系统找到它们是个问题。

我认为使用MsiEnumRelatedProductsMsiEnumProductsEx通过办公室升级代码查询Windows安装程序更为优雅。

这将返回自Office 2000或更高版本以来安装或公布的所有相关产品(按需安装)。

您可以在a lot of other functions查询安装状态并安装文件夹。