Comment détecter la version installée DE MS-Office?
est-ce que quelqu'un sait quelle serait la meilleure façon de détecter quelle version de Office est installée? De plus, s'il y a plusieurs versions de Office installées, j'aimerais savoir quelles sont ces versions. Un bonus serait si je peux détecter la version spécifique(s) d'Excel est(/sont) installé.
8 réponses
une façon de vérifier la version Office installée serait de vérifier les clés de registre InstallRoot
pour les applications Office d'intérêt.
Par exemple, si vous souhaitez vérifier si Word 2007 est installé, vous devriez vérifier la présence de la clé de Registre suivante:
HKLM\Software\Microsoft\Office.0\Word\InstallRoot::Path
cette entrée contient le chemin vers l'exécutable.
remplacer 12.0 (Pour Office 2007) par la version correspondante numéro:
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
les autres applications ont des clés similaires:
HKLM\Software\Microsoft\Office.0\Excel\InstallRoot::Path
HKLM\Software\Microsoft\Office.0\PowerPoint\InstallRoot::Path
ou vous pouvez vérifier le chemin racine commun de toutes les applications:
HKLM\Software\Microsoft\Office.0\Common\InstallRoot::Path
une autre option, sans utiliser de clés de Registre spécifiques, serait d'interroger la base de données MSI en utilisant L'API MSIEnumProducts
comme décrit ici .
comme une mise à part, les installations parallèles de différentes versions de bureau ne sont pas officiellement soutenu par Microsoft. Ils font un peu de travail, mais vous pourriez obtenir des effets indésirables et des incohérences.
Que Diriez-vous de HKEY_CLASSES_ROOT\Word.Application \ CurVer?
si vous avez installé Office 32-bit sur une machine 64-bit, Vous pouvez avoir besoin de vérifier la présence de" SOFTWARE\Wow6432Node\Microsoft\Office\12.0\", en remplaçant la 12.0 par la version appropriée. C'est certainement le cas pour Office 2007 installé sur Windows 7 64 bits.
notez Qu'Office 2010 (==14.0) est le premier Office pour lequel il existe une version 64 bits.
j'ai trouvé ce Codeprojet qui m'a aidé avec ce même problème: 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;
}
}
}
pourquoi ne pas cocher HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\[office.exe]
, où [office.exe]
signifie un produit de bureau particulier exe-nom du fichier, par exemple winword.exe
, excel.exe
, etc.
Là vous obtenez le chemin vers l'exécutable et vérifiez la version de ce fichier.
Comment vérifier la version du fichier: en C++ / en c#
Toute critique envers une telle approche?
Un bonus serait si je peux détecter la version spécifique(s) d'Excel est(/sont) installé.
je sais que la question a été posée et a répondu il y a longtemps, mais cette même question m'a occupé jusqu'à ce que je fasse cette observation:
pour obtenir le numéro de construction( par exemple 15.0.4569.1506
), utilisez la commande HKLM\SOFTWARE\Microsoft\Office\[VER]\Common\ProductVersion::LastProduct
, où [VER]
est le numéro de la version principale (12.0 Pour Office 2007, 14.0 Pour Office 2010, 15.0 pour Office 2013).
sur une fenêtre 64 bits, vous devez insérer Wow6432Node
entre les miettes SOFTWARE
et Microsoft
, quelle que soit l'épaisseur de l'installation de bureau.
sur mes machines, cela donne les informations de version de la version installée à l'origine. Pour Office 2010 par exemple, les nombres correspondent à ceux qui sont énumérés ici , et ils diffèrent de la version rapportée dans File > Help
, qui reflète des correctifs appliquée par les correctifs.
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;
}
}