如何以编程方式检测 Office 2019?

How to detect Office 2019 programmatically?

我们习惯于通过获取完整版本(例如从已安装的 Office 可执行文件的文件信息)来检测当前安装的 Office 版本,并将主要版本映射到一个友好的名称,例如 15 映射到 "Office 2013", 16 至 "Office 2016".

不过Office 2019没有大版本号变化,我们得到的版本号是16.0.10827.20138

是否有可靠的方法将次版本号映射到 "Office 2019"?从哪个值开始是 2019 年?还有其他方法可以检测是否安装了 Office 2019 吗?

"Office 2016" 没有更多的小更新了吗?

Office 365、Office 2019 和 Office 2016 都有相同的版本:16.0. 可以参考以下link:

Supported scenarios for installing different versions of Office, Project, and Visio on the same computer

目前微软还没有发布停止更新office2016的消息

我只从文档上看到office2019只有一个版本,如果你已经安装了office2019,那么你的office2019就是启动。

请参阅以下内容link:

Update history for Office 2019

据我们所知,Office 版本 numbers/build Office 2016、2019 和 Office 365 的编号可能相同。

Office 2016 和 2019 应该有冻结的功能集,而 Office 365 将自动更新新功能。在某个阶段,O365 和其他内部版本号会重叠。我们还发现,使用 Click-to-运行 安装的 Office 2016 可能具有与 2019 相同的内部版本号,尽管它仅包含安全更新。

与 MSI 一起安装的 Office 2016 将具有静态内部版本号。没有适用于 Office 2019 的 MSI 安装程序,这意味着它将自动更新并且其内部版本号可能会像 Office 365 一样增加?

无论如何:不再可能从内部版本号确定 Office 版本。此外,我们还查找了以下注册表项:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun 

如果它不存在且主版本号为 16,则它是 Office 2016 MSI 安装。

如果它存在,您就知道它是点击 运行 安装,您可以检查以下子项值,从中可以推断出 2016、2019 或 365:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\Configuration\ProductReleaseIDs 

示例值为 "O365ProPlusRetail" 或 "ProPlus2019Retail" 或只是 "ProPlusRetail"

欢迎提出更好的建议。

不知道这对某人是否仍然重要,但对我来说是今天,所以我想贡献我的发现。

我不知道这是否可以转移到其他版本的 office,但是对于 2016,我发现了以下注册表值

HKEY_CURRENT_USER\Software\Microsoft\Office.0\Common\ExperimentConfigs\Ecs\CountryCode
HKEY_CURRENT_USER\Software\Microsoft\Office.0\Common\ExperimentConfigs\Ecs\LicenseCategoryInfo
HKEY_CURRENT_USER\Software\Microsoft\Office.0\Common\ExperimentConfigs\Ecs\LicenseSKUInfo
HKEY_CURRENT_USER\Software\Microsoft\Office.0\Common\ExperimentConfigs\Ecs\PerpetualLicenseInfo

就我而言,这些密钥包含以下信息(相同顺序):

std::wstring|DE
std::wstring|3
std::wstring|ProPlusRetail
std::wstring|2016

所以你所要做的就是读取这些键并剪切“std::wstring|”部分。

希望对某人有所帮助。

我在这里给出了检测 Office 95-2019 / O365 的完整答案How to detect installed version of MS-Office?

该代码也允许 64 到 32 位回退和特定的 ClickAndRun 检测。 欢迎评论;)