Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

Один из способов проверить установленную версию 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

Другие приложения имеют похожие клавиши:

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. Они несколько работают, но вы можете получить нежелательные эффекты и несоответствия.

Ответ 2

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

Ответ 3

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

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

Ответ 5

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



}
}

Ответ 6

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

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

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

Ответ 7

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

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

Чтобы получить номер сборки (например, 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, которая отражает применяемые исправления по исправлениям.

Ответ 8

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