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é.

55
demandé sur code4life 2010-07-16 19:53:52

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.

64
répondu Dirk Vollmar 2015-10-07 16:17:00

Que Diriez-vous de HKEY_CLASSES_ROOT\Word.Application \ CurVer?

21
répondu BobL2112 2015-01-09 22:43:43

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.

13
répondu Jason 2012-09-21 12:16:29

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

9
répondu peinearydevelopment 2014-01-02 05:17:07
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;
    }



}
}
7
répondu zee 2012-02-13 18:43:42

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?

5
répondu John Bosco 2017-05-23 12:26:27

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.

2
répondu bovender 2017-10-18 19:24:13
        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;
            }
        }
1
répondu Rakeshravi G 2016-08-05 12:22:22