您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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

检查安装的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开始,基于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);

Office 2019的 文件版本为16.0.10730.20102,因此如果您看到的 内容大于您正在处理的Office 2019或当前Office 365版本。

其他 2022/1/1 18:21:32 有596人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶