Определите, является ли Office 32-битным или 64-битным через реестр

Теперь, когда Office также поставляется с 64-битной установкой, где в реестре вы узнаете, является ли установленная версия Office 32-битной или 64-битной?

28 ответов

Решение

Из статьи TechNet о 64-разрядных выпусках Office 2010:

Если вы установили Office 2010, включая Microsoft Outlook 2010, Outlook устанавливает раздел реестра с именем Bitness типа REG_SZ на компьютере, на котором он установлен. Раздел реестра Bitness указывает, является ли установка Outlook 2010 32-разрядной или 64-разрядной. Это может быть полезно администраторам, которые заинтересованы в аудите компьютеров, чтобы определить установленные версии Office 2010 в своей организации.

  • Путь к реестру: HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Office \ 14.0 \ Outlook
  • если вы установили Office 2013, используйте этот путь реестра: HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Office \ 15.0 \ Outlook
  • Ключ реестра: битность
  • Значение: либо x86, либо x64

и в другом месте той же статьи:

Начиная с Office 2010, Outlook доступен как 32-разрядное приложение и 64-разрядное приложение. Выбор версии (разрядности) Outlook зависит от версии операционной системы Windows (32-разрядной или 64-разрядной) и редакции Office 2010 (32- или 64-разрядной), установленной на компьютере, если Office уже установлен на этом компьютере.

Факторы, определяющие возможность установки 32-разрядной или 64-разрядной версии Outlook, включают следующее:

  • Вы можете установить 32-разрядную версию Office 2010 и 32-разрядную версию Microsoft Outlook 2010 в поддерживаемой 32-разрядной или 64-разрядной версии операционной системы Windows. Вы можете установить 64-разрядную версию Office 2010 и 64-разрядную версию Outlook 2010 только в поддерживаемой 64-разрядной операционной системе.
  • Установка Office 2010 по умолчанию в 64-разрядной версии операционной системы Windows - 32-разрядная версия Office 2010.
  • Разрядность установленной версии Outlook всегда совпадает с разрядностью Office 2010, если Office установлен на одном компьютере. Таким образом, 32-разрядную версию Outlook 2010 нельзя установить на тот же компьютер, на котором уже установлены 64-разрядные версии других приложений Office 2010, таких как 64-разрядная версия Microsoft Word 2010 или 64-разрядная версия Microsoft Excel 2010. Аналогично 64-разрядную версию Outlook 2010 нельзя установить на тот же компьютер, на котором уже установлены 32-разрядные версии других приложений Office.

Я проверил ответ Отаку, и кажется, что значение битности Outlook устанавливается, даже если Outlook не установлен, хотя в указанной статье не указано, что это именно так.

Чтобы добавить ответ vtrz, вот функция, которую я написал для Inno Setup:

const
  { Constants for GetBinaryType return values. }
  SCS_32BIT_BINARY = 0;
  SCS_64BIT_BINARY = 6;
  { There are other values that GetBinaryType can return, but we're }
  { not interested in them. }

{ Declare Win32 function  }
function GetBinaryType(lpApplicationName: AnsiString; var lpBinaryType: Integer): Boolean;
external 'GetBinaryTypeA@kernel32.dll stdcall';

function Is64BitExcelFromRegisteredExe(): Boolean;
var
  excelPath: String;
  binaryType: Integer;
begin
  Result := False; { Default value - assume 32-bit unless proven otherwise. }
  { RegQueryStringValue second param is '' to get the (default) value for the key }
  { with no sub-key name, as described at }
  { http://stackru.com/questions/913938/ }
  if IsWin64() and RegQueryStringValue(HKEY_LOCAL_MACHINE,
      'SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\excel.exe',
      '', excelPath) then begin
    { We've got the path to Excel. }
    try
      if GetBinaryType(excelPath, binaryType) then begin
        Result := (binaryType = SCS_64BIT_BINARY);
      end;
    except
      { Ignore - better just to assume it's 32-bit than to let the installation }
      { fail.  This could fail because the GetBinaryType function is not }
      { available.  I understand it's only available in Windows 2000 }
      { Professional onwards. }
    end;
  end;
end;

С сожалением могу сказать, что методы как Otacku, так и @clatonh не работают для меня - ни Outlook Bitness, ни {90140000-0011-0000-1000 -0000000FF1CE} в реестре (для 64-битного Office без установленного Outlook).

Единственный способ, который я нашел, но не через реестр, это проверить битность одного из исполняемых файлов Office с помощью функции Windows API GetBinaryType (начиная с Windows 2000 Professional).

Например, вы можете проверить битность Winword.exe, путь которого хранится в
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ Пути к приложениям \Winword.exe.

Вот фрагмент кода MFC:

CRegKey rk;
if (ERROR_SUCCESS == rk.Open(HKEY_LOCAL_MACHINE, 
  "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\Winword.exe", 
  KEY_READ)) {
    CString strWinwordPath;
    DWORD dwSize = MAX_PATH;
    if (ERROR_SUCCESS == rk.QueryStringValue(strWinwordPath, 
        strWinwordPath.GetBuffer(MAX_PATH), &dwSize)) {
            strWinwordPath.ReleaseBuffer();
            DWORD dwBinaryType;
            if (::GetBinaryType(strWinwordPath, &dwBinaryType)) {
                if (SCS_64BIT_BINARY == dwBinaryType) {
                    // Detected 64-bit Office 
                } else {
                    // Detected 32-bit Office 
                }
            } else {
                // Failed
            }
        } else {
            // Failed
        }
    } else {
    // Failed
}

Я нашел способ проверить офисную разрядность.

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

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\Configuration

Платформа x86 для 32 бит.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\Configuration

Платформа x64 для 64 бит.

Пожалуйста, проверьте...

Внимание: запрос на разрядность приложения Outlook НЕ работает надежно, если он вызывается в среде.NET.

Здесь мы используем GetBinaryType() в DLL, которая может быть вызвана любым приложением:

  • Если приложение хоста является 64-битным C/C++, GetBinaryType() возвращает SCS_32BIT_BINARY.
  • Если хост-приложение является 64-битным.NET (мы тестировали "AnyCPU" в 64-битной системе), GetBinaryType() возвращает SCS_64BIT_BINARY.

С точно таким же кодом DLL и точно таким же двоичным путем Outlook ("c:/Program Files (x86)/...")) на том же компьютере.

Это означает, что вам может потребоваться проверить двоичный файл самостоятельно с помощью записи "IMAGE_NT_HEADERS.FileHeader.Machine".

Боже, я ненавижу неправильные возвращаемые значения некоторых API Windows (см. Также GetVersion() ложь).

Я нашел этот подход:

Если HKLM\Software\WOW6432Node существует, то Windows является 64-битной.

Если существует HKLM\Software\WOW6432Node\Microsoft\Office, Office является 32-разрядным.

Если HKLM\Software\WOW6432Node\Microsoft\Office не существует, но HKLM \ Software \ Microsoft \ Office существует, то Office является 64-разрядным.

Если HKLM\Software\WOW6432Node не существует, то Windows и Office являются 32-разрядными.

Источник: Форум Technet

Не через реестр, а через инструменты командной строки:

/questions/34434047/opredelit-versiyu-microsoft-office-s-java/34434065#34434065

C: \ Users \ me> assoc.msg

.msg = Outlook.File.msg.15

C: \ Users \ me> ftype Outlook.File.msg.15

Outlook.File.msg.15 = "C: \ Program Files (x86) \ Microsoft Office \ Root \ Office16 \ OUTLOOK.EXE" / f "% 1"

Этот код InnoSetup работает для меня под Win 10x64 и Office 2016 x86 (используя "HKLM\SOFTWARE\Microsoft\Office\ClickToRun\Configuration" и ключ "Platform")

[Code]
const
  RegOffice='SOFTWARE\Microsoft\Office\ClickToRun\Configuration';
  RegOfficeKey='Platform';

/// <summary>
/// Get current HKLM version
/// </summary>
function GetHKLM: Integer;
begin
  if IsWin64 then
    Result := HKLM64
  else
    Result := HKLM32;
end;

/// <summary>
/// Check is Microsoft Office is installed or not
/// </summary>
function IsOfficeInstalled (): Boolean;
var
  platform: string;
begin
  RegQueryStringValue(GetHKLM(), RegOffice, RegOfficeKey, platform);
  if platform = 'x86' then begin
   SuppressibleMsgBox('Microsoft Office found (x86 version)' , mbConfirmation, MB_YESNO or MB_DEFBUTTON1, IDYES);
    Result := True;
  end else if platform = 'x64' then begin
    SuppressibleMsgBox('Microsoft Office found (x64 version)', mbConfirmation, MB_YESNO or MB_DEFBUTTON1, IDYES);
    Result := True;
  end else begin
    SuppressibleMsgBox('Microsoft Office NOT found' + platform + '.', mbConfirmation, MB_YESNO or MB_DEFBUTTON1, IDYES);
    Result := False;
  end;
end;

Вы можете искать в реестре {90140000-0011-0000-0000-0000000FF1CE}. Если полужирные цифры начинаются с 0, то это x86, 1 - x64

Для меня это было в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Registration{90140000-0057-0000-0000-0000000FF1CE}

Источник

РЕДАКТИРОВАТЬ: Решение, не касаясь RegistryKeys - им жаль Op.

Я узнал, что есть решение в C# - оригинал можно найти здесь: https://blogs.msdn.microsoft.com/webdav_101/2016/07/26/sample-detecting-installed-outlook-and-its-bitness/

Я немного изменил его для своих нужд.

просто передайте правильный outlookPath в GetOutlookBitness()

  public enum BinaryType : uint

    {
        SCS_32BIT_BINARY = 0, // A 32-bit Windows-based application
        SCS_64BIT_BINARY = 6, // A 64-bit Windows-based application.
        SCS_DOS_BINARY = 1, // An MS-DOS – based application
        SCS_OS216_BINARY = 5, // A 16-bit OS/2-based application
        SCS_PIF_BINARY = 3, // A PIF file that executes an MS-DOS – based application
        SCS_POSIX_BINARY = 4, // A POSIX – based application
        SCS_WOW_BINARY = 2 // A 16-bit Windows-based application
    }



    [DllImport("kernel32.dll")]
    static extern bool GetBinaryType(string lpApplicationName, out BinaryType lpBinaryType);




    public int GetOutlookBitness(string FilePath)
    {
        int bitness = 0;

        if (File.Exists(FilePath))
        {
            BinaryType type;
            GetBinaryType(FilePath, out type);


            switch (type)
            {
                case BinaryType.SCS_32BIT_BINARY:
                    bitness = 32;
                    break;
                case BinaryType.SCS_64BIT_BINARY:
                    bitness = 64;
                    break;
            }
        }

        return bitness;



    }

Вот что я смог использовать в VBscript для обнаружения Office 64bit Outlook:

Dim WshShell, blnOffice64, strOutlookPath
Set WshShell = WScript.CreateObject("WScript.Shell")
blnOffice64=False
strOutlookPath=WshShell.RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\outlook.exe\Path")
If WshShell.ExpandEnvironmentStrings("%PROCESSOR_ARCHITECTURE%") = "AMD64" And _
    not instr(strOutlookPath, "x86") > 0 then 
  blnOffice64=True
  wscript.echo "Office 64"
End If

Я написал это для Outlook в первую очередь. Немного изменил его для Word, но он не будет работать при автономной установке, потому что этот ключ не показывает разрядность, только Outlook.

Кроме того, я написал это для поддержки только текущих версий Office, =>2010

Я снял все настройки и пост-обработку...

:checkarch
    IF NOT "%PROCESSOR_ARCHITECTURE%"=="x86" SET InstallArch=64bit
    IF "%PROCESSOR_ARCHITEW6432%"=="AMD64" SET InstallArch=64bit
    IF "%InstallArch%"=="64bit" SET Wow6432Node=\Wow6432Node
GOTO :beginscript

:beginscript
SET _cmdDetectedOfficeVersion=reg query "HKEY_CLASSES_ROOT\Word.Application\CurVer"
@FOR /F "tokens=* USEBACKQ" %%F IN (`!_cmdDetectedOfficeVersion! 2^>NUL `) DO (
SET _intDetectedOfficeVersion=%%F
)
set _intDetectedOfficeVersion=%_intDetectedOfficeVersion:~-2%


:switchCase
:: Call and mask out invalid call targets
    goto :case!_intDetectedOfficeVersion! 2>nul || (
:: Default case
    ECHO Not installed/Supported
    )
  goto :case-install

:case14
    Set _strOutlookVer= Word 2010 (!_intDetectedOfficeVersion!)
    CALL :GetBitness !_intDetectedOfficeVersion!
    GOTO :case-install  
:case15
    Set _strOutlookVer= Word 2013 (!_intDetectedOfficeVersion!)
    CALL :GetBitness !_intDetectedOfficeVersion!
    GOTO :case-install
:case16
    Set _strOutlookVer= Word 2016 (!_intDetectedOfficeVersion!)
    CALL :GetBitness !_intDetectedOfficeVersion!
    goto :case-install
:case-install
    CALL :output_text !_strOutlookVer! !_strBitness! is installed
GOTO :endscript


:GetBitness
FOR /F "tokens=3*" %%a in ('reg query "HKLM\Software%Wow6432Node%\Microsoft\Office\%1.0\Outlook" /v Bitness 2^>NUL') DO Set _strBitness=%%a
GOTO :EOF

Ранее я слепо следил за ответом на основе документов MSDN. Сегодня это оказалось меньше, чем требовалось. На компьютере с установленным Office Home и Student, который не включает Outlook, HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\14.0\Outlook присутствовал, но HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Outlook не было. Теперь я изменил свой код, чтобы сначала искать "простую" версию без Wow6432Node. Если он присутствует, он будет использован. Если нет, то продолжим, посмотрев на версию Wow6432Node. Это проверяется установщиком на основе Inno Setup- я не знаю, какие API использует Inno Setup. Если ваше приложение не обращается к реестру таким же образом, вы можете увидеть другие результаты.

@clatonh: это путь к реестру на моем ПК: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Registration{90140000-002A-0000-1000-0000000FF1CE}, и это определенно 32-битная установка на 64-битной ОПЕРАЦИОННЫЕ СИСТЕМЫ.

Найдите в реестре путь установки интересующего вас компонента Office, например, для Excel 2010 посмотрите в ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ (Wow6432Node)\Microsoft\Office\14.0\Excel\InstallRoot. Это будет только в 32-битном реестре или в 64-битном реестре, но не в обоих.

В моих тестах многие из описанных здесь подходов дают сбой, я думаю, потому что они основаны на записях в реестре Windows, которые оказываются ненадежно представленными, в зависимости от версии Office, способа его установки и т. Д. Поэтому другой подход состоит в том, чтобы не использовать реестр вообще (хорошо, настолько строго, что делает его не ответом на поставленный вопрос), а вместо этого напишите скрипт, который:

  1. Создание экземпляров Excel
  2. Добавляет книгу в этот экземпляр Excel
  3. Добавляет модуль VBA в эту книгу
  4. Внедряет небольшую функцию VBA, которая возвращает разрядность Office
  5. Вызывает эту функцию
  6. Очищает

Вот этот подход, реализованный в VBScript:

Function OfficeBitness()

    Dim VBACode, Excel, Wb, Module, Result

    VBACode = "Function Is64bit() As Boolean" & vbCrLf & _
              "#If Win64 Then" & vbCrLf & _
              "    Is64bit = True" & vbCrLf & _
              "#End If" & vbCrLf & _
              "End Function"

    On Error Resume Next
    Set Excel = CreateObject("Excel.Application")
    Excel.Visible = False
    Set Wb = Excel.Workbooks.Add
    Set Module = Wb.VBProject.VBComponents.Add(1)
    Module.CodeModule.AddFromString VBACode
    Result = Excel.Run("Is64bit")
    Set Module = Nothing
    Wb.Saved = True
    Wb.Close False
    Excel.Quit
    Set Excel = Nothing
    On Error GoTo 0
    If IsEmpty(Result) Then
        OfficeBitness = 0 'Alternatively raise an error here?
    ElseIf Result = True Then
        OfficeBitness = 64
    Else
        OfficeBitness = 32
    End If

End Function

PS. Этот подход работает медленнее, чем другие (около 2 секунд на моем ПК), но он может оказаться более надежным в разных установках и версиях Office.

У меня нет ключа под названием bitness ни в одной из этих папок. У меня есть ключ "default" в обеих этих папках, а значение "unset". Мой компьютер поставляется с Office 2010 Starter (я полагаю, 64-разрядный). Я удалил его и попытался сделать полную установку 32-битного офиса. Я продолжаю получать следующее сообщение. файл несовместим, проверьте, нужна ли вам версия программы для x86 или x64.

какой-нибудь совет для меня?

Вам не нужно это сценарий. Посмотрите на эту страницу, на которую я наткнулся:

https://social.msdn.microsoft.com/Forums/office/en-US/43499ae0-bcb5-4527-8edb-f5a955987b56/how-to-detect-whether-installed-ms-office-2010-is-32-or-64-bit?forum=worddev

Подвести итоги:

Четвертое поле в коде продукта указывает битность продукта.

{BRMMmmmm-PPPP-LLLL-p000-D000000FF1CE} p000

0 для x86, 1 для x64 0-1 (это также верно для MSOffice 2013)

ПРИМЕЧАНИЕ ХОРОШО: перечисленная выше функция обнаружения не работает. У меня есть 64-битная версия Office и отдельная с 32-й версией. Обе версии, использующие эту функцию, возвращают 32-битную версию.

Проверка реестра вручную приводит к одному и тому же выводу: и 64-битный, и 32-битный (Office 2010 x64 и 32-битный Office 2013) отчет 32-битный.

Лично я думаю, что команда Office должна просто написать и поддерживать где-то легко получить ключ реестра. Все надстройки должны ссылаться на это, и в настоящее время "угадывание" является плохим подходом для разработчиков.

Эта статья в Википедии гласит:

В 64-разрядных версиях Windows есть две папки для файлов приложений; "Program Files" папка содержит 64-битные программы, а "Program Files (x86)" Папка содержит 32-битные программы.

Так что если программа установлена ​​под C:\Program Files это 64-битная версия. Если он установлен под C:\Program Files (x86) это 32-битная установка.

Я нашел гораздо более простой способ. Используя Powershell, мы можем подключить Excel как COM-объект.

$user = $env:UserName
$msoExcel = New-Object -ComObject Excel.Application  
$msoExcel | Select-Object -Property OperatingSystem | Out-File "\\SERVER\Path\To\Dump\msoVersion-$user.txt"
exit

При запросе OperatingSystem таким образом, мы получаем странные результаты, посмотрите здесь. ПК3 мой.

Я надеюсь, что это работает для вас, ребята. Извините за отсутствие кода; мои сценарии в основном функциональны.

Изменить: не забудьте добавить код, чтобы закрыть Excel после того, как вы закончите получение данных.
После вчерашнего тестирования этого кода у меня внезапно появилось множество открытий и сбоев Excel.
Это обеспечит удовлетворение пользователей и администраторов (:

[System.Runtime.Interopservices.Marshal]::ReleaseComObject($msoExcel)
Remove-Variable msoExcel

Раздел реестра Outlook Bitness не существует на моем компьютере.

Один из способов определить разрядность Outlook - это изучить сам Outlook.exe и определить, является ли он 32-разрядным или 64-разрядным.

В частности, вы можете проверить тип [IMAGE_FILE_HEADER.Machine][1], и это вернет значение, указывающее тип процессора.

Чтобы получить отличную предысторию этого обсуждения, прочитав PE заголовок файла, прочитайте это (устаревшая ссылка), в котором говорится:

Структура IMAGE_NT_HEADERS является основным местом, где хранятся особенности PE-файла. Его смещение задается полем e_lfanew в IMAGE_DOS_HEADER в начале файла. На самом деле существует две версии структуры IMAGE_NT_HEADER, одна для 32-битных исполняемых файлов, а другая для 64-битных версий. Различия настолько незначительны, что я буду считать их одинаковыми для целей этого обсуждения. Единственный правильный, одобренный Microsoft способ различения этих двух форматов заключается в значении поля Magic в IMAGE_OPTIONAL_HEADER (описывается в ближайшее время).

IMAGE_NT_HEADER состоит из трех полей:

typedef struct _IMAGE_NT_HEADERS { DWORD Signature; IMAGE_FILE_HEADER FileHeader; IMAGE_OPTIONAL_HEADER32 OptionalHeader; } IMAGE_NT_HEADERS32, *PIMAGE_NT_HEADERS32;

и вы можете получить код C# здесь.

Поле Magic находится в начале структуры IMAGE_OPTIONAL_HEADER, 2 байта со смещением 24 от начала _IMAGE_NT_HEADERS. Он имеет значения 0x10B для 32-разрядных и 0x20B для 64-разрядных.

У меня Win 7 64 бит + Excel 2010 32 бит. Это реестр HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Registration{90140000-002A-0000-1000-0000000FF1CE}

Так что это может сказать битность ОС, а не битность Office

Еще один способ обнаружить разрядность Office - это найти typelib.

Например, чтобы определить разрядность Outlook, запишите файл.JS следующим образом:

function detectVersion()
    var outlooktlib = "TypeLib\\{00062FFF-0000-0000-C000-000000000046}";
    var HKCR = 0x80000000;

    var loc = new ActiveXObject("WbemScripting.SWbemLocator");
    var svc = loc.ConnectServer(null,"root\\default");
    var reg = svc.Get("StdRegProv");

    var method = reg.Methods_.Item("EnumKey");
    var inparam = method.InParameters.SpawnInstance_();
    inparam.hDefKey = HKCR;
    inparam.sSubKeyName = outlooktlib;
    var outparam = reg.ExecMethod_(method.Name,inparam);
    tlibver = outparam.sNames.toArray()[0];

    method = reg.Methods_.Item("GetStringValue");
    inparam = method.InParameters.SpawnInstance_();
    inparam.hDefKey = HKCR;
    inparam.sSubKeyName = outlooktlib + "\\" + tlibver + "\\0\\win32";
    inparam.sValueName = "";
    outparam = reg.ExecMethod_(method.Name,inparam);
    if(outparam.sValue) return "32 bit";

    method = reg.Methods_.Item("GetStringValue");
    inparam = method.InParameters.SpawnInstance_();
    inparam.hDefKey = HKCR;
    inparam.sSubKeyName = outlooktlib + "\\" + tlibver + "\\0\\win64";
    inparam.sValueName = "";
    outparam = reg.ExecMethod_(method.Name,inparam);
    if(outparam.sValue) return "64 bit";

    return "Not installed or unrecognizable";
}

Вы можете узнать идентификатор typelib другого компонента Office и заменить для него первую строку функции. Вот краткий список интересных идентификаторов:

{4AFFC9A0-5F99-101B-AF4E-00AA003F0F07} - Access
{00020905-0000-0000-C000-000000000046} - Word
{00020813-0000-0000-C000-000000000046} - Excel
{91493440-5A91-11CF-8700-00AA0060263B} - Powerpoint
{0002123C-0000-0000-C000-000000000046} - Publisher
{0EA692EE-BB50-4E3C-AEF0-356D91732725} - OneNote 2010+
{F2A7EE29-8BF6-4A6D-83F1-098E366C709C} - OneNote 2007

Все вышеперечисленные lib id были найдены с помощью инструмента Windows SDK OLE-COM Object ViewerВы можете узнать больше идентификаторов lib, используя его.

Преимущество этого подхода состоит в том, что он работает для всех версий офиса и обеспечивает контроль над каждым компонентом, который вас интересует. Кроме того, эти ключи находятся в HKEY_CLASSES_ROOT и глубоко интегрированы в систему, поэтому маловероятно, что они были недоступны даже в среде песочницы.

Самый простой способ: поместите значок "О" в приложение Office 2016. Пример Excel

1) Откройте Excel -> Файл -> Параметры -> Настройка ленты

2) Вы увидите 2 панели. Выберите команды из & настроить ленту

3) Из Выберите команду, выберите Все команды

4) Из полученного списка выделите О (Excel)

5) В "Настройте боль на ленте" выделите любой элемент (например, вид), в который вы хотите поместить значок "О программе".

6) Нажмите Новая группа внизу

7) Нажмите кнопку добавления, расположенную между двумя панелями. СДЕЛАННЫЙ

Теперь, когда вы нажимаете вкладку View в Excel и нажимаете о, вы увидите 32-битную или 64-битную

Я нашел безопасный и надежный способ в своем скрипте на основе InnoSetup, чтобы понять, является ли конкретное приложение 32-битным или 64-битным (в моем случае мне нужно было тестировать Excel), используя функцию Win32 API. Эта функция называется GetBinaryType(), это происходит из `kernel32' (несмотря на название, оно встречается в 32- и 64-битном варианте) и смотрит прямо на заголовок exe.

Если кто-то хочет узнать только, какой бит установлен в установленной версии Office 2010, то в любом приложении Office 2010 просто нажмите "Файл", а затем "Справка". Информация о номере версии будет указана, а рядом в скобках будет (32-битная) или (64-битная) версия.

Откройте Outlook 2013 > Файл> Учетная запись Office> О программе Outlook > нажмите большую кнопку "? О программе Outlook"> прочитайте описание всплывающего окна

Другие вопросы по тегам