Один из способов проверить установленную версию 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 с использованием API MSIEnumProducts
, как описано здесь .
Кроме того, параллельная установка различных версий Office официально не поддерживается Microsoft.Они действительно работают, но вы можете получить нежелательные эффекты и несоответствия.
Обновление: Office 2019 и Office 365
Начиная с Office 2019, настройка на основе MSI больше не доступна, Click-To-Run - единственный способ развертыванияОфис сейчас.Вместе с этим изменением в отношении регулярно обновляемого 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);
Файловую версию Office2019 - это 16.0.10730.20102, поэтому, если вы видите что-то большее, чем то, что вы имеете дело с Office 2019 или текущей версией Office 365.