我正在开发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)实例?
答案 0 :(得分:0)
使用您的解决方案,您只能获得最后安装的实例。 这是因为最后注册的COM-Object将回答。
最后一个存储在此注册表项中: HKEY_CLASSES_ROOT \ Word.Application 在这些键上至少有一个文件夹" CLSID"这指向了对象。
所有办公室版本都具有相同的名称和班级ID。 通过COM系统找到它们是个问题。
我认为使用MsiEnumRelatedProducts或MsiEnumProductsEx通过办公室升级代码查询Windows安装程序更为优雅。
这将返回自Office 2000或更高版本以来安装或公布的所有相关产品(按需安装)。
您可以在a lot of other functions查询安装状态并安装文件夹。