52

现在 Office 也有 64 位安装,您在注册表中的哪个位置可以找到安装的 Office 版本是 32 位还是 64 位?

4

28 回答 28

53

来自关于64 位 Office 2010 版本的TechNet 文章:

如果您安装了包括 Microsoft Outlook 2010 在内的 Office 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 位或 64 位版本的 Windows 操作系统上安装 32 位 Office 2010 和 32 位 Microsoft Outlook 2010。您只能在受支持的 64 位操作系统上安装 64 位版本的 Office 2010 和 64 位 Outlook 2010。
  • Office 2010 在 64 位版本的 Windows 操作系统上的默认安装是 32 位 Office 2010。
  • 如果 Office 安装在同一台计算机上,则已安装版本的 Outlook 的位数始终与 Office 2010 的位数相同。也就是说,不能将 32 位版本的 Outlook 2010 安装在已安装 64 位版本的其他 Office 2010 应用程序(例如 64 位 Microsoft Word 2010 或 64 位 Microsoft Excel 2010)的同一台计算机上。类似地, 64 位版本的 Outlook 2010 不能安装在已安装 32 位版本的其他 Office 应用程序的同一台计算机上。
于 2010-02-06T04:48:07.343 回答
23

我已经测试了 Otaku 的答案,即使未安装 Outlook,也似乎设置了 Outlook 位数值,即使引用的文章并未明确表明会出现这种情况。

于 2010-05-25T21:11:42.630 回答
12

要添加到 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://stackoverflow.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;
于 2012-07-25T14:02:10.750 回答
9

遗憾地说,但 Otacku 和 @clatonh 的方法都对我不起作用 - 注册表中既没有 Outlook Bitness 也没有 {90140000-0011-0000- 1000 -0000000FF1CE} (对于未安装 Outlook 的 64 位 Office)。

不过,我发现的唯一方法不是通过注册表,而是使用 Windows API 函数GetBinaryType(自 Windows 2000 Professional 起)检查 Office 可执行文件之一的位数。

例如,您可以检查 Winword.exe 的位数,该路径存储在
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\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
}
于 2011-04-27T14:56:09.863 回答
7

我找到了检查办公室位数的方法。

我们可以使用以下注册表项检查 office 365 和 2016 位数:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\Configuration

用于 32 位的平台 x86。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\Configuration

用于 64 位的平台 x64。

请检查...

于 2017-04-24T04:37:51.553 回答
5

注意:如果在 .NET 环境中调用,查询 Outlook 应用程序的位数不会可靠地工作。

在这里,我们在一个可以被任何应用程序调用的 DLL 中使用 GetBinaryType():

  • 如果主机应用程序是 64 位 C/C++,GetBinaryType() 返回 SCS_32BIT_BINARY。
  • 如果宿主应用程序是 64 位 .NET(我们在 64 位系统上测试了“AnyCPU”),GetBinaryType() 返回 SCS_64BIT_BINARY。

在同一台计算机上使用完全相同的 DLL 代码和完全相同的 Outlook 二进制路径(“c:/Program Files (x86)/...”)。

这意味着您可能需要使用“IMAGE_NT_HEADERS.FileHeader.Machine”条目自己测试二进制文件。

上帝,我讨厌某些 Windows API 的错误返回值(另请参阅 GetVersion() 谎言)。

于 2014-03-26T08:17:23.823 回答
3

我发现了这种方法:

如果 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 论坛

于 2012-04-04T18:33:43.503 回答
2

这是我能够在 VBscript 中用于检测 Office 64 位 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
于 2015-02-26T22:46:14.840 回答
2

您可以在注册表中搜索 {90140000-0011-0000-0000 -0000000FF1CE }。如果粗体数字以 0 开头,则为 x86,1 为 x64

对我来说,它位于 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Registration{90140000-0057-0000-0000-0000000FF1CE}

资源

于 2010-08-10T19:23:53.407 回答
2

此 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;
于 2016-04-14T19:23:45.523 回答
2

编辑:不接触 RegistryKeys 的解决方案 - 对不起 Op。

我发现 C# 中有一个解决方案 - 可以在此处找到原件: https ://blogs.msdn.microsoft.com/webdav_101/2016/07/26/sample-detecting-installed-outlook-and-its-位数/

我根据自己的需要对其进行了一些修改。

只需将正确的 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;



    }
于 2019-04-29T16:12:38.503 回答
1

我以前盲目地遵循基于 MSDN 文档的答案。今天,事实证明这比要求的要少。在安装了 Office 家庭和学生版(不包括 Outlook)的计算机HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\14.0\Outlook上存在,但HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Outlook不存在。我现在已将代码更改为首先查找“普通”非 Wow6432Node 版本。如果存在,它将被使用。如果没有,它将继续查看 Wow6432Node 版本。这正在基于 Inno Setup 的安装程序中进行检查 - 我不知道 Inno Setup 使用哪些 API。如果您的应用程序没有以相同的方式访问注册表,您可能会看到不同的结果。

于 2011-09-27T20:31:45.130 回答
1

@clatonh:这是我 PC 上注册表的路径:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Registration{90140000-002A-0000-1000-0000000FF1CE},它绝对是 64 位上的 32 位安装操作系统。

于 2010-08-16T11:47:47.253 回答
1

我在这两个文件夹中都没有名为 bitness 的密钥。我在这两个文件夹中都有一个名为“default”的键,值是“unset” 我的电脑带有 Office 2010 启动器(我假设是 64 位)。我将其删除并尝试完整安装 32 位 Office。我不断收到以下消息。该文件不兼容,请检查您是否需要 x86 或 x64 版本的程序。

对我有什么建议吗?

于 2010-08-05T15:04:37.327 回答
1

在注册表中搜索您感兴趣的 Office 组件的安装路径,例如对于 Excel 2010,请在 SOFTWARE(Wow6432Node)\Microsoft\Office\14.0\Excel\InstallRoot 中查找。它只会在 32 位注册表或 64 位注册表中,而不是两者。

于 2015-04-15T14:16:31.877 回答
1

不是通过注册表而是通过命令行工具:

https://stackoverflow.com/a/6194710/2885897

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"

于 2016-08-11T13:20:03.097 回答
1

在我的测试中,这里描述的许多方法都失败了,我认为是因为它们依赖于 Windows 注册表中的条目,这些条目结果并不可靠,具体取决于 Office 版本、安装方式等。所以另一种方法是不使用注册表(好吧,严格来说,这使得它不能回答所提出的问题),而是编写一个脚本:

  1. 实例化 Excel
  2. 将工作簿添加到该 Excel 实例
  3. 将 VBA 模块添加到该工作簿
  4. 注入一个返回 Office 位数的小 VBA 函数
  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。这种方法比这里的其他方法运行得更慢(在我的 PC 上大约 2 秒),但它可能会在不同的安装和 Office 版本中更可靠。

几个月后,我意识到可能有一种更简单的方法,尽管它仍然是实例化 Excel 实例的方法。VBScript 是:

Function OfficeBitness()
    Dim Excel
    Set Excel = CreateObject("Excel.Application")
    Excel.Visible = False
    If InStr(Excel.OperatingSystem,"64") > 0 Then
        OfficeBitness = 64
    Else
        OfficeBitness = 32
    End if
    Excel.Quit
    Set Excel = Nothing
End Function

这取决于这样一个事实,即Application.OperatingSystem在 64 位 Windows 上从 32 位 Excel 调用时返回Windows (32-bit) NT 10.00或至少在我的 PC 上返回。但这在docs中没有提到。

于 2019-01-25T14:05:38.040 回答
1

我一开始是为 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
于 2018-03-19T18:01:26.817 回答
0

我在基于 InnoSetup 的脚本中找到了一种安全可靠的方法,通过使用 Win32 API 函数来了解特定应用程序是 32 位还是 64 位(在我的情况下我需要测试 Excel)。这个函数被称为GetBinaryType(),它来自 `kernel32'(尽管它有 32 位和 64 位的名称)并直接查看 exe 的标头。

于 2012-06-14T13:08:53.770 回答
0

这篇维基百科文章指出:

在 64 位版本的 Windows 上,应用程序文件有两个文件夹;该"Program Files"文件夹包含 64 位程序,该"Program Files (x86)"文件夹包含 32 位程序。

所以如果程序安装在C:\Program Files它下面是64位版本。如果是安装在下面C:\Program Files (x86)就是32位安装。

于 2012-03-20T18:16:37.603 回答
0

您不需要编写脚本。看看我偶然发现的这个页面:

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

总结一下:

productcode 中的第四个字段表示产品的位数。

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

0 表示 x86,1 表示 x64 0-1(这也适用于 MSOffice 2013)

于 2015-03-02T12:33:01.757 回答
0

我有 win 7 64 位 + Excel 2010 32 位。注册表是 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Registration{90140000-002A-0000-1000-0000000FF1CE}

所以这可以告诉操作系统的位数,而不是 Office 的位数

于 2011-09-21T18:12:42.613 回答
0

检测 Office 位数的另一种方法是找出类型库。

例如,要检测 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";
}

您可以找出其他 Office 组件的 typelib id,并为其替换函数的第一行。以下是有趣 ID 的简要列表:

{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 id。

这种方法的好处是它适用于所有版本的 office,并提供对您感兴趣的每个组件的控制。此外,这些密钥位于 HKEY_CLASSES_ROOT 中并深度集成到系统中,因此即使在沙盒环境中也不太可能无法访问它们。

于 2013-04-24T00:26:59.123 回答
0

我的机器上不存在 Outlook Bitness 注册表项。

确定 Outlook 位数的一种方法是检查 Outlook.exe 本身并确定它是 32 位还是 64 位。

具体来说,您可以检查 [IMAGE_FILE_HEADER.Machine][1] 类型,这将返回一个指示处理器类型的值。

对于本次讨论的优秀背景,在读取文件的 PE Header 时,请阅读this (outdated link),其中指出;

IMAGE_NT_HEADERS 结构是存储 PE 文件细节的主要位置。它的偏移量由文件开头的 IMAGE_DOS_HEADER 中的 e_lfanew 字段给出。IMAGE_NT_HEADER 结构实际上有两个版本,一个用于 32 位可执行文件,另一个用于 64 位版本。差异是如此之小,以至于出于本讨论的目的,我认为它们是相同的。区分这两种格式的唯一正确的、Microsoft 认可的方法是通过 IMAGE_OPTIONAL_HEADER 中的 Magic 字段的值(稍后描述)。

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 结构的开头,距离 _IMAGE_NT_HEADERS 开头的偏移 24 处的 2 个字节。32 位的值为 0x10B,64 位的值为 0x20B。

于 2014-06-24T14:55:19.287 回答
0

最简单的方法:将“关于”图标放在 Office 2016 应用程序上。示例 Excel

1) 打开 Excel -> 文件 -> 选项 -> 自定义功能区

2) 您将看到 2 个窗格。从中选择命令并自定义功能区

3) 从选择命令中,选择所有命令

4)从结果列表中突出显示关于(Excel)

5)从自定义功能区疼痛中,突出显示要放置“关于”图标的任何项目(例如视图)

6)点击底部的新建组

7) 单击位于两个窗格之间的添加按钮。完毕

现在,当您单击 excel 中的“查看”选项卡并单击“关于”时,您将看到 32 位或 64 位

于 2017-01-27T18:33:26.873 回答
0

我找到了一个更简单的方法。使用 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

当以这种方式请求操作系统时,我们会得到奇怪 的结果,看看这里。PC3是我的。

我希望这对你们有用。抱歉缺少代码;我的脚本大多是功能性的。

编辑:完成检索数据后,不要忘记添加代码以关闭 Excel。
在昨天测试了这段代码之后,我突然打开了大量的 Excel 并崩溃了。
这将确保您让用户和管理员满意(:

[System.Runtime.Interopservices.Marshal]::ReleaseComObject($msoExcel)
Remove-Variable msoExcel
于 2017-08-15T08:29:52.863 回答
-5

如果只想知道已安装的 Office 2010 版本的位数,那么在 Office 2010 的任何应用程序中,只需单击文件,然后单击帮助。将列出有关版本号的信息,旁边的括号中将是(32 位)或(64 位)。

于 2012-07-29T05:22:49.773 回答
-6

打开 Outlook 2013 > 文件 > Office 帐户 > 关于 Outlook > 单击大的“?关于 Outlook”按钮 > 阅读弹出说明

于 2014-02-01T02:45:55.827 回答