Как определить установленную версию MS-Office?

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

8 Solutions collect form web for “Как определить установленную версию MS-Office?”

Один из способов проверить установленную версию Office – проверить InstallRoot реестра InstallRoot для интересующих приложений Office.

Например, если вы хотите проверить, установлен ли Word 2007, вы должны проверить наличие следующего ключа реестра:

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

Эта запись содержит путь к исполняемому файлу.

Замените 12.0 (для Office 2007) на соответствующий номер версии:

 Офис 97 - 7,0
 Офис 98 - 8,0
 Office 2000 - 9.0
 Office XP - 10.0
 Office 2003 - 11.0
 Office 2007 - 12.0
 Office 2010 - 14.0 (sic!)
 Офис 2013 - 15,0
 Офис 2016 - 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 с использованием API MSIEnumProducts как описано здесь .

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

Как насчет HKEY_CLASSES_ROOT \ Word.Application \ CurVer?

Если вы установили 32-разрядный Office на 64-разрядную машину, вам может потребоваться проверить наличие «SOFTWARE \ Wow6432Node \ Microsoft \ Office \ 12.0 \», заменив 12.0 соответствующей версией. Это, безусловно, относится к Office 2007, установленному на 64-разрядной Windows 7.

Обратите внимание, что Office 2010 (== 14.0) – это первый Office, для которого существует 64-разрядная версия.

Я нашел этот CodeProject, который помог мне справиться с этой самой проблемой: http://www.codeproject.com/Articles/26520/Getting-Office-s-Version

 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; } } } 

Почему бы не проверить HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\[office.exe] , где [office.exe] обозначает конкретный файл exe-файла для офиса, например winword.exe , excel.exe и т. д. Там вы получаете путь к исполняемому файлу и проверяете версию этого файла.

Как проверить версию файла: в C ++ / in C #

Любая критика в отношении такого подхода?

Бонус был бы, если бы я мог обнаружить определенные версии (ы) Excel, которые установлены (/).

Я знаю, что вопрос был задан и дан ответ давно, но этот же вопрос заставил меня заняться, пока я не сделал это замечание:

Чтобы получить номер сборки (например, 15.0.4569.1506 ), 15.0.4569.1506 HKLM\SOFTWARE\Microsoft\Office\[VER]\Common\ProductVersion::LastProduct , где [VER] является основным номером версии (12.0 для Office 2007, 14.0 для Office 2010, 15,0 для Office 2013).

В 64-битной Windows вам необходимо вставить Wow6432Node между SOFTWARE и крошками Microsoft , независимо от бита установки Office.

На моих машинах это дает информацию о версии изначально установленной версии. Например, для Office 2010 номера соответствуют указанным здесь , и они отличаются от версии, указанной в « File > Help , которая отражает исправления, применяемые исправлениями.

  public string WinWordVersion { get { string _version = string.Empty; Word.Application WinWord = new Word.Application(); switch (WinWord.Version.ToString()) { case "7.0": _version = "95"; break; case "8.0": _version = "97"; break; case "9.0": _version = "2000"; break; case "10.0": _version = "2002"; break; case "11.0": _version = "2003"; break; case "12.0": _version = "2007"; break; case "14.0": _version = "2010"; break; case "15.0": _version = "2013"; break; case "16.0": _version = "2016"; break; default: break; } return WinWord.Caption + " " + _version; } } 
  • Как я могу вызвать функцию xll addin из vba?
  • Создание презентаций PowerPoint программно
  • Давайте будем гением компьютера.