在WindowsLinux上用python3脚本检查可执行文件是32位的还是64位的

问题描述 投票:0回答:1

我正在用Python3(更具体地说。Python 3.8.1). 在某些时候,软件需要检查某个任意可执行文件是64位还是32位。经过一番研究,我找到了下面的帖子。

检查一个exe是32位还是64位。

在本帖中,提供了以下解决方案。

subprocess.call(['dumpbin', '/HEADERS', 'test2.exe', '|', 'find', '"machine"'])

不幸的是,这个办法在 Python 3.8.1. 这个帖子已经有近8年的历史了,可以追溯到......。Python 2.x 天。

如何从内部测试64-bitness?Python 3.x? 我需要一个Linux和Windows 10的解决方案。

EDITS : 与Windows相关的说明。 显然 DumpBin 解决办法(见 检查一个exe是32位还是64位。 帖子)需要安装Visual Studio。这对我来说是不可能的。我的Python3软件应该可以在任何Windows 10电脑上运行。

Linux相关的说明。 在Linux上,我不需要测试PE格式的可执行文件。只要Linux可执行文件就可以了。

python python-3.x exe 32bit-64bit
1个回答
2
投票

检测ELF二进制文件(即Linux)的64-bitness很容易,因为它总是在头的同一个地方。

def is_64bit_elf(filename):
    with open(filename, "rb") as f:
        return f.read(5)[-1] == 2

我没有Windows系统,所以我无法测试这个,但这可能在Windows上有效。

def is_64bit_pe(filename):
    import win32file
    return win32file.GetBinaryType(filename) == 6
© www.soinside.com 2019 - 2024. All rights reserved.