通过注册表检测Office是32位还是64位。

52

现在Office也可以使用64位安装,那么在注册表中,你应该去哪里查找已安装的Office是32位还是64位版本呢?

28个回答

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

0

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

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

2)您将看到两个面板。选择命令和自定义功能区

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

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

5)从自定义功能区中突出显示任何项目(例如"视图"),在其中放置"关于"图标

6)在底部单击"新建组"

7)单击位于两个面板之间的添加按钮。 完成!

现在,在Excel中点击"视图"选项卡并单击"关于",您将看到32位或64位版本。


0

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

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

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

关于读取文件的PE Header的相关讨论,请参阅this (过时的链接),其中指出:

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个字节。它的值为0x10B表示32位,0x20B表示64位。


看起来这个回答补充了讨论,但它并不能单独作为一个答案。这可能是一个编辑,以改进现有答案,或者是一个完整的回答原始问题,因为它采用了不同的方法? - Anson
PE头新链接。 - Markus

0

2
回答之前,您应该检查是否已经给出了答案。是的。 - Jan Doggen

0

我使用的是Win 7 64位+Excel 2010 32位。

注册表路径为HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Registration{90140000-002A-0000-1000-0000000FF1CE}。

因此,这可以告诉我们操作系统的位数,而不是Office的位数。


0

这篇维基百科文章指出:

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

因此,如果程序安装在C:\Program Files下,则为64位版本。如果安装在C:\Program Files (x86)下,则为32位安装。


4
我不建议这样做,因为最近微软似乎没有遵循这个指南。如果用户通过Office 365在64位机器上安装32位的Office,则会在“Program Files”而不是“Program Files (x86)”中安装32位的winword.exe。例如,通过Office 365门户安装Office 2013 32位。在64位机器上,您将得到winword.exe路径:C:\Program Files\Microsoft Office 15\root\office15。 - JohnZaj
另一个导致这个无法工作的原因是用户可以将安装文件夹更改为基本上任何内容。 - lznt
我得到了与@JohnZaj提到的相同的东西。 - alfi

-5

如果您只想知道已安装的Office 2010版本是哪个位数,则在Office 2010的任何应用程序中,只需单击“文件”,然后单击“帮助”即可。版本号信息将列出,并在其旁边的括号中标注(32位)或(64位)。


是的,但这一切都是关于让安装程序弄清楚用户计算机上有什么。安装程序无法单击帮助菜单。 - Dirk Bester

-6

打开Outlook 2013 > 文件 > Office账户 > 关于Outlook > 点击大的"? 关于Outlook"按钮 > 阅读弹出的描述


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接