`

[Windows] 如何检测32位或64位的文件?

阅读更多
这几天在搞64位的windows编程,有时候需要知道所使用的dll或者lib是32 bit或者 64bit的  (64 bit的程序无法调用32 bit的lib或dll),最简单的方法是用windows下的工具dumpbin:

dumpbin /headers <filename>


开头几行就显示了这个文件的target machine,比如
PE signature found

File Type: DLL

FILE HEADER VALUES
             14C machine (x86)
               1 number of sections
        45499E0A time date stamp Thu Nov 02 03:28:10 2006
               0 file pointer to symbol table
               0 number of symbols
              E0 size of optional header
            2102 characteristics
                   Executable
                   32 bit word machine
                   DLL

OPTIONAL HEADER VALUES
             10B magic # (PE32)


或者,你也可以用这段perl代码:
#!/usr/bin/perl 
# 
# usage: petype <exefile> 
# 
$exe = $ARGV[0]; 
 
open(EXE, $exe) or die "can't open $exe: $!"; 
binmode(EXE); 
if (read(EXE, $doshdr, 68)) { 
 
   ($magic,$skip,$offset)=unpack('a2a58l', $doshdr); 
   die("Not an executable") if ($magic ne 'MZ'); 
 
   seek(EXE,$offset,SEEK_SET); 
   if (read(EXE, $pehdr, 6)){ 
       ($sig,$skip,$machine)=unpack('a2a2v', $pehdr); 
       die("No a PE Executable") if ($sig ne 'PE'); 
 
       if ($machine == 0x014c){ 
            print "i386\n"; 
       } 
       elsif ($machine == 0x0200){ 
            print "IA64\n"; 
       } 
       elsif ($machine == 0x8664){ 
            print "AMD64\n"; 
       } 
       else{ 
            printf("Unknown machine type 0x%lx\n", $machine); 
       } 
   } 
} 
 
close(EXE); 
分享到:
评论

相关推荐

    DLL动态库检测工具 32位64位检测工具 文件版本检测工具

    虽然32位程序可以在64位windows下运行,但也有一些条件,要求EXE程度及所有dll动态库均统一为32位或64位,而不能混合运行。 作为软件开发人员,经常会碰到DLL动态库版本混乱问题,不同位数、不同版本的动态库可能...

    delphi 判断 exe 是否是 x64位可执行文件

    在Delphi编程环境中,开发人员有时需要确定一个可执行文件(EXE)是32位还是64位。这是因为不同的操作系统版本和处理器架构对可执行文件有不同的要求。本篇文章将详细探讨如何使用Delphi来检查一个EXE文件是否为64位...

    dll文件32位64位检测工具以及Windows文件夹SysWow64的坑.docx

    标题中的“dll文件32位64位检测工具”指的是用于检查动态链接库(dll)文件是否为32位或64位的软件工具。在32位和64位操作系统共存的时代,正确地识别和管理dll文件变得至关重要。这是因为32位应用程序和64位应用...

    dll文件32位64位检测工具以及Windows文件夹SysWow64的坑.pdf

    标题中的“dll文件32位64位检测工具”指的是用于检查动态链接库(dll)文件是否为32位或64位的软件工具。这些工具可以帮助开发者或系统管理员确定程序依赖的dll文件是否与运行的操作系统架构相匹配,从而避免出现...

    可识别dll,exe等可执行文件是32位或64位。

    在IT领域,了解一个DLL(动态链接库)或EXE(可执行文件)是32位还是64位至关重要,因为这关系到程序的兼容性和性能。32位和64位的区别主要在于它们的数据处理能力和内存访问范围。 首先,我们要明白32位和64位操作...

    判断Windows可执行程序是32位还是64位

    本程序能够判断可执行程序是Win32的还是AMD64的, 其原理是读取二进制,判断其中几个字节的数据

    工具_检测dll是32位or64位

    虽然32位程序可以在64位windows下运行,但也有一些条件,要求EXE程度及所有dll动态库均统一为32位或64位,而不能混合运行。 作为软件开发人员,经常会碰到DLL动态库版本混乱问题,不同位数、不同版本的动态库可能混...

    Window 系统检测dll文件是32位还是64位

    "Window 系统检测dll文件是32位还是64位"这一主题,就是要探讨如何确定这些动态链接库文件的体系结构。 首先,Windows系统提供了内置的命令行工具——`dumpbin`,它是Visual Studio的一部分,可以用来查看DLL文件的...

    delphi 检测系统是xp,vista,win7还是32位,64位

    "delphi 检测系统是xp,vista,win7还是32位,64位"这个标题正是指向了这样的需求。下面将详细解释如何在Delphi中实现这一功能。 首先,我们需要了解Delphi中获取操作系统信息的基本方法。这通常涉及到Windows API...

    exe或dll等PE格式文件32位64位判断检测 PE32or64

    Windows在文件属性上一直没有显示exe、dll等PE格式文件是32位还是64位。这在很多情况下很有用,比如0xc000007b错误,很多时候就是因为32位、64位dll弄错引起的。本资源总结了10种检测方法,包括自己编写的部分代码、...

    SWT32位和64位库

    压缩包中的文件可能包括了Windows、Linux、macOS等多个平台的32位和64位版本,每个平台下可能进一步细分为不同的库文件,如dll(Windows)、so(Linux)或dylib(macOS)等。 总的来说,理解SWT的32位和64位版本至...

    TSC条码打印机Dll文件(32位+64位)

    对于32位(win32)和64位(x64)版本的Dll文件,这是针对不同体系架构的Windows操作系统设计的。32位Dll适用于32位操作系统,而64位Dll则是为64位操作系统准备的。在使用时,确保选择与你的系统架构匹配的Dll文件,...

    xuetr 二合一单文件 支持WIN10 32 64位 V1.52.rar

    标题 "xuetr 二合一单文件 支持WIN10 32 64位 V1.52.rar" 暗示我们讨论的是一个名为 "xuetr" 的软件工具,它是一个专为Windows 10操作系统设计的驱动程序管理与检测工具。这个版本是V1.52,意味着它是经过多次更新和...

    vlc windows 64位插件

    6. **64位版本的优势**:64位版的VLC相对于32位版,可以利用更多的系统内存,处理更大的媒体文件,提供更流畅的播放性能,尤其对于高清或长时间播放的视频更有优势。 在提供的压缩包中,"vlc-3.0.3-win64.exe"是VLC...

    QT检测是否是64位机

    在开发过程中,有时我们需要根据目标系统的位数(32位或64位)来调整代码或选择不同的资源。在QT中检测系统是否为64位机主要涉及到对操作系统的理解和QT提供的系统信息类的使用。 首先,QT提供了一个名为`QSysInfo`...

    HP430 32位64位 驱动

    描述中的“32位选32”、“64位选X64”意味着在选择驱动时,用户应根据自己的操作系统位数来选择正确的驱动文件进行安装。 在文件名称列表中,我们看到的"HP430 32位64位 驱动"可能是一个包含了所有所需驱动程序的...

    Delhi根据文件头检测PE文件是32位还是64位

    本篇将详细介绍如何通过Delphi编程来检测PE文件头以判断其是32位还是64位。 首先,我们需要理解PE文件头的基本结构。PE文件由多个部分组成,包括DOS头、PE头(NT头)和节表等。其中,PE头的COFF(Common Object ...

    SeetaFace6 Windows 32位和64位编译库

    SeetaFace6包含人脸识别的基本能力:人脸检测、关键点定位、人脸识别,同时增加了活体检测、质量评估、年龄性别估计,并且顺应实际应用需求,开放口罩检测以及口罩佩戴场景下的人脸识别...包括Windows 32位和64位动态库

Global site tag (gtag.js) - Google Analytics