wake-up-neo.com

Wie erkenne ich die installierte Version von MS-Office?

Weiß jemand, was der beste Weg wäre, um festzustellen, welche Office-Version installiert ist? Wenn mehrere Versionen von Office installiert sind, würde ich gerne wissen, um welche Versionen es sich handelt. Ein Bonus wäre, wenn ich feststellen kann, welche Excel-Version (en) installiert ist (sind).

56
code4life

Eine Möglichkeit, nach der installierten Office-Version zu suchen, besteht darin, die Registrierungsschlüssel InstallRoot für die gewünschten Office-Anwendungen zu überprüfen.

Wenn Sie beispielsweise überprüfen möchten, ob Word 2007 installiert ist, sollten Sie prüfen, ob der folgende Registrierungsschlüssel vorhanden ist:

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

Dieser Eintrag enthält den Pfad zur ausführbaren Datei.

Ersetzen Sie 12.0 (für Office 2007) durch die entsprechende Versionsnummer:

 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!) 

Die anderen Anwendungen haben ähnliche Schlüssel:

HKLM\Software\Microsoft\Office\12.0\Excel\InstallRoot::Path
HKLM\Software\Microsoft\Office\12.0\PowerPoint\InstallRoot::Path

Oder Sie können den gemeinsamen Stammpfad aller Anwendungen überprüfen:

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

Eine andere Möglichkeit, ohne bestimmte Registrierungsschlüssel zu verwenden, besteht darin, die MSI-Datenbank mit der API MSIEnumProducts abzufragen, wie beschrieben hier .

Außerdem werden parallele Installationen verschiedener Office-Versionen von Microsoft nicht offiziell unterstützt. Sie funktionieren etwas, aber es kann zu unerwünschten Effekten und Inkonsistenzen kommen.

Update: Office 2019 und Office 365

Ab Office 2019 sind keine MSI-basierten Setups mehr verfügbar. Click-To-Run ist die einzige Möglichkeit, Office jetzt bereitzustellen. Zusammen mit dieser Änderung in Richtung des regelmäßig aktualisierten Office 365 werden auch die Haupt-/Nebenversionsnummern von Office (zumindest vorläufig) nicht mehr aktualisiert. Dies bedeutet, dass - auch für Office 2019 - der in Registrierungsschlüsseln verwendete Wert und der von Application.Version (Z. B. in Word) zurückgegebene Wert immer noch 16.0 Sind.

Derzeit gibt es keine dokumentierte Möglichkeit, Office 2016 von Office 2019 zu unterscheiden. Ein Hinweis könnte die Dateiversion von winword.exe sein. Diese Version wird jedoch auch für gepatchte Office 2016-Versionen inkrementiert (siehe den Kommentar von @antonio unten).

Wenn Sie irgendwie zwischen Office-Versionen unterscheiden müssen, z. So stellen Sie sicher, dass eine bestimmte Funktion vorhanden ist oder eine Mindestversion von Office installiert ist. Dies ist wahrscheinlich die beste Methode, um die Dateiversion einer der Hauptanwendungen von Office anzuzeigen:

// 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);

Die Dateiversion von Office 2019 ist 16.0.10730.20102. Wenn Sie also etwas Größeres als das sehen, haben Sie es mit Office 2019 oder einer aktuellen Office 365-Version zu tun.

71
Dirk Vollmar

Wie wäre es mit HKEY_CLASSES_ROOT\Word.Application\CurVer?

23
BobL2112

Wenn Sie 32-Bit-Office auf einem 64-Bit-Computer installiert haben, müssen Sie möglicherweise das Vorhandensein von "SOFTWARE\Wow6432Node\Microsoft\Office\12.0 \" überprüfen und 12.0 durch die entsprechende Version ersetzen. Dies ist sicherlich bei Office 2007 der Fall, das unter 64-Bit-Windows 7 installiert ist.

Beachten Sie, dass Office 2010 (== 14.0) das erste Office ist, für das eine 64-Bit-Version vorhanden ist.

16
Jason

Ich habe dieses CodeProject gefunden, das mir bei diesem Problem geholfen hat: http://www.codeproject.com/Articles/26520/Getting-Office-s-Version

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



}
}
8
zee

Warum nicht HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\[office.exe], woher [office.exe] steht für einen bestimmten exe-Dateinamen des Office-Produkts, z. winword.exe, Excel.exe etc. Dort erhält man den Pfad zur ausführbaren Datei und prüft die Version dieser Datei.

So überprüfen Sie die Version der Datei: in C++ /in C #

Kritik an einem solchen Ansatz?

5
John Bosco

Ein Bonus wäre, wenn ich feststellen kann, welche Excel-Version (en) installiert ist (sind).

Ich weiß, dass die Frage vor langer Zeit gestellt und beantwortet wurde, aber diese Frage hat mich beschäftigt, bis ich diese Bemerkung machte:

Um die Build-Nummer (z. B. 15.0.4569.1506) Zu erhalten, prüfen Sie HKLM\SOFTWARE\Microsoft\Office\[VER]\Common\ProductVersion::LastProduct, Wobei [VER] Die Hauptversionsnummer ist (12.0 für Office 2007, 14.0 für Office 2010, 15.0 für Office 2013) ).

Unter 64-Bit-Windows müssen Sie Wow6432Node Zwischen den Krümeln SOFTWARE und Microsoft einfügen, unabhängig von der Größe der Office-Installation.

Auf meinen Computern werden hier die Versionsinformationen der ursprünglich installierten Version angezeigt. Beispielsweise stimmen die Zahlen für Office 2010 mit den hier aufgeführten überein und unterscheiden sich von der in File > Help Angegebenen Version, die Patches wiedergibt durch Hotfixes angewendet.

2
bovender
        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
Rakeshravi G