为了账号安全,请及时绑定邮箱和手机立即绑定

如何检测已安装的MS-Office版本?

/ 猿问

如何检测已安装的MS-Office版本?

慕姐8265434 2019-09-21 14:54:47

有谁知道检测安装哪个版本的Office的最佳方法是什么?另外,如果安装了多个版本的Office,我想知道它们是什么版本。如果我能检测到已安装的特定版本的Excel,那么将是一个奖励。



查看完整描述

3 回答

?
慕雪9262066

检查安装的Office版本的一种方法是检查InstallRoot感兴趣的Office应用程序的注册表项。


例如,如果您想检查是否已安装Word 2007,则应检查是否存在以下注册表项:


HKLM\Software\Microsoft\Office\12.0\Word\InstallRoot::Path

此项包含可执行文件的路径。


用相应的版本号替换12.0(用于Office 2007):


Office 97-7.0

Office 98-8.0

Office 2000-9.0

Office XP-10.0

Office 2003-11.0

Office 2007-12.0

Office 2010-14.0(原文如此!)

Office 2013-15.0

Office 2016年-16.0

Office 2019-16.0(原文如此!)

其他应用程序具有类似的键:


HKLM\Software\Microsoft\Office\12.0\Excel\InstallRoot::Path

HKLM\Software\Microsoft\Office\12.0\PowerPoint\InstallRoot::Path

或者,您可以检查所有应用程序的公共根路径:


HKLM\Software\Microsoft\Office\12.0\Common\InstallRoot::Path

另一种选择,而无需使用特定的注册表项是查询使用MSI数据库MSIEnumProductsAPI描述这里。


顺便说一句,Microsoft不正式支持不同Office版本的并行安装。它们确实起作用,但是您可能会得到不想要的效果和不一致之处。


更新:Office 2019和Office 365


从Office 2019开始,基于MSI的设置不再可用,即点即用是立即部署Office的唯一方法。与对定期更新的Office 365的更改一起,Office的主要/次要版本号也不再(至少暂时)未更新。这意味着-即使对于Office 2019-注册表项中使用的值和Application.Version(例如在Word中)返回的值仍为16.0。


目前,尚无记录的方法可以将Office 2016与Office 2019区别开来。但是,此版本还会针对修补的Office 2016版本增加(请参见下面@antonio的注释)。


如果您需要以某种方式区分Office版本,例如,确保存在某些功能或安装了最低版本的Office,则可能是查看主要Office应用程序之一的文件版本的最佳方法:


// Using the file path to winword.exe

// Retrieve the path e.g. from the InstallRoot Registry key

var fileVersionInfo = FileVersionInfo.GetVersionInfo(@"C:\Program Files (x86)\Microsoft Office\root\Office16\WINWORD.EXE");

var version = new Version(fileVersionInfo.FileVersion);


// On a running instance using the `Process` class

var process = Process.GetProcessesByName("winword").First();

string fileVersionInfo = process.MainModule.FileVersionInfo.FileVersion;

var version = Version(fileVersionInfo);


查看完整回答
反对 回复 2019-09-21
?
暮色呼如

如果在64位计算机上安装了32位Office,则可能需要检查是否存在“ SOFTWARE \ Wow6432Node \ Microsoft \ Office \ 12.0 \”,然后用适当的版本替换12.0。对于安装在64位Windows 7上的Office 2007,确实是这种情况。

请注意,Office 2010(== 14.0)是第一个存在64位版本的Office。


查看完整回答
反对 回复 2019-09-21
?
紫衣仙女

namespace Software_Info_v1._0

{

using System;

using System.Collections.Generic;

using System.Text;

using Microsoft.Office.Interop;


public class MS_Office

{

    public string GetOfficeVersion()

    {

        string sVersion = string.Empty;

        Microsoft.Office.Interop.Word.Application appVersion = new Microsoft.Office.Interop.Word.Application();

        appVersion.Visible = false;

        switch (appVersion.Version.ToString())

        {

            case "7.0":

                sVersion = "95";

                break;

            case "8.0":

                sVersion = "97";

                break;

            case "9.0":

                sVersion = "2000";

                break;

            case "10.0":

                sVersion = "2002";

                break;

            case "11.0":

                sVersion = "2003";

                break;

            case "12.0":

                sVersion = "2007";

                break;

            case "14.0":

                sVersion = "2010";

                break;

            default:

                sVersion = "Too Old!";

                break;

        }

        Console.WriteLine("MS office version: " + sVersion);

        return null;

    }




}

}


查看完整回答
反对 回复 2019-09-21

添加回答

回复

举报

0/150
提交
取消
意见反馈 邀请有奖 帮助中心 APP下载
官方微信