Как обнаружить установленную версию MS Office?

Кто-либо знает то, что было бы лучшим способом обнаружить, какая версия Office установлена? Плюс, если бы существует несколько версий установленного Office, я хотел бы знать, каковы версии они. Премия была бы то, если я могу обнаружить определенную версию (версии) Excel, который является (/), установленный.

56
задан code4life 16 July 2010 в 15:53
поделиться

1 ответ

Одним из способов проверки установленной версии 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 (sic!)
Office 2013 - 15.0
Office 2016 - 16.0
Office 2019 - 16.0 (sic!)

Другие приложения имеют аналогичные ключи:

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 с помощью MSIEnumProducts API, как описано здесь.

В качестве дополнения, параллельная установка различных версий Office официально не поддерживается компанией Microsoft. В некоторой степени они работают, но вы можете получить нежелательные эффекты и несоответствия.

Обновление: Office 2019 и Office 365

Начиная с Office 2019, установка на основе MSI больше не доступна, Click-To-Run теперь единственный способ развертывания Office. Вместе с этим переходом на регулярно обновляемый Office 365, также перестали обновляться номера основных/минимальных версий Office (по крайней мере, на данный момент). Это означает, что даже для Office 2019 значение, используемое в ключах реестра и возвращаемое Application.Version (например, в Word), по-прежнему равно 16.0.

На данный момент не существует документированного способа отличить Office 2016 от Office 2019. Подсказкой может быть версия файла winword.exe; однако эта версия также увеличивается для исправленных версий 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.

72
ответ дан 26 November 2019 в 17:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: