当前位置:首页 > 系统 > Windows > 正文内容

Windows 如何判断一个应用程序是32位还是64位

Windows5年前 (2021-04-19)

2021-04-19 17:53:29


方法一

查看任务管理器,

32位程序,在程序名尾部会追加    (32位),

64位程序,只显示程序名。


方法二


使用HEX打开应用程序,

32位程序,头部会含有    PE..L

64位程序,头部会含有    PE..d

20230123:方法二的准确性降低,原因是一个在任务管理器未提示x32的程序,它头部的标志是PE..L(50 45 00 00 4C)


2026年9月3日00:29:34


更新正确的判断方式,以C#为例

        #region 判断EXE位数

        public enum Platform
        {
            /// <summary>
            /// 不是有效的PE文件或其他架构
            /// </summary>
            Unknown,
            /// <summary>
            /// 32位
            /// </summary>
            x86,
            /// <summary>
            /// 64位
            /// </summary>
            x64
        }

        /// <summary>
        /// 通过解析PE文件头判断EXE是32位还是64位
        /// </summary>
        /// <param name="filePath">EXE文件的完整路径</param>
        /// <returns>平台类型</returns>
        public static Platform GetPlatform(string filePath)
        {
            using (var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
            using (var br = new BinaryReader(fs))
            {
                // 1. 定位到PE头起始位置
                // PE头的偏移量存储在文件偏移 0x3C 处[reference:10]
                fs.Seek(0x3C, SeekOrigin.Begin);
                int peOffset = br.ReadInt32();

                // 2. 跳转到PE头,验证签名 "PE\0\0"
                fs.Seek(peOffset, SeekOrigin.Begin);
                uint peSignature = br.ReadUInt32();
                if (peSignature != 0x00004550) // "PE\0\0" 的小端表示[reference:12]
                {
                    return Platform.Unknown; // 不是有效的PE文件
                }

                // 3. 读取 Machine 字段
                // Machine字段位于PE签名之后,是一个2字节的USHORT
                ushort machine = br.ReadUInt16();

                // 4. 判断结果
                if (machine == 0x014c) // IMAGE_FILE_MACHINE_I386[reference:15]
                {
                    return Platform.x86;
                }
                else if (machine == 0x8664) // IMAGE_FILE_MACHINE_AMD64[reference:16]
                {
                    return Platform.x64;
                }
                else
                {
                    return Platform.Unknown; // 其他架构
                }
            }

        #endregion


转载请注明出处。

本文链接:http://www.pythonopen.com/?id=31

相关文章

Windows10 关闭快速访问

在资源管理器中点击 [查看] [选项][常规] [隐私]取消勾选 [在“快速访问”中显示最近使用的文...

Windows 开机自启小键盘

Windows Registry Editor Version&nbs...

Windows 10关闭文件夹索引

在 Windows 10 中关闭文件夹的索引功能可以按照以下步骤操作,既能提升部分场景下的性能,又能...

Windows10 电源按钮添加休眠

[设置]-[系统]-[电源和休眠]-[其他电源设置]-[更改当前不可用的设置]-[选择电源按钮的功能...

windows10 删除微软输入法

22H2[设置]-[时间和语言]-[语言]在[首选语言]中点击使用的语言,点击[选项],在键盘中选择...