`

[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动态库版本混乱问题,不同位数、不同版本的动态库可能...

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

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

    工具_检测dll是32位or64位

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

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

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

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

    用于检测Windows 系统下的dll文件到底是32位的还是64位的

    SeetaFace6 Windows 32位和64位编译库

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

    exe4j windows32位和exe4j windows64位版本4.5.2(含注册机)

    exe4j是一个帮助你集成Java应用程序到Windows操作环境的java可执行文件生成工具,无论这些应用是用于服务器,还是图形用户界面(GUI)或命令行的应用程序。如果你想在任务管理器中及Windows XP分组的用户友好任务栏...

    Dll 文件检测修复

    Dll 文件检测修复支持win732/64位,XP32/64位

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

    。。。

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

    。。。

    exe4j_windows(破解版,注册码) 32位 64位

    xe4j是一个帮助你集成Java应用程序到Windows操作环境的java可执行文件生成工具,无论这些应用是用于服务器,还是图形用户界面(GUI)或命令行的应用程序。如果你想在任务管理器中及Windows XP分组的用户友好任务栏里...

    exe4j windows 64位版4.5.2(含注册机)

    exe4j是一个帮助你集成Java应用程序到Windows操作环境的java可执行文件生成工具,无论这些应用是用于...1.这个exe4j是64位版本,注册机同样适用于32位版; 2.exe4j打包出来的exe文件执行时照样需要机器已经安装jre。

    System.Windows.Forms.DataVisualization

    第二步:然后根据您系统的情况选择X86/X64,X86为32位电脑,X64为64位电脑。 如果您不知道是X86还是X64,您可以点此链接检测。 第三步:根据软件情况选择文件版本。此步骤比较复杂,如果是Windows的dll文件,  ...

    NetMeeting Win7 32位 64位系统之解决

    因为MSASN动态链接库的冲突,Windows7不再支持Netmeeting,鉴于Vista和Windows7内核的同源性。特别修改了一下Netmeeting内核程序,...在win7_64机器先安装nm30.exe,再把cracks下文件复制到netmeeting安装目录下覆盖。

    PowerTool 64位版

    适用系统:Vista/Windows 2008 Server/Windows7/Windows 8 Release Preview Build 8400 (64位) 支持PE系统 目前版本主要功能: 1. 所有进程的枚举(包括内核中隐藏的进程) 2. 所有文件的枚举(包括内核中隐藏的...

    硬件信息检测工具 AIDA64 Extreme 6.25.5400 中文多语免费版.zip

    AIDA64目前支持所有的32位和64位Microsoft Windows操作系统,包括对Windows 7和Windows Server 2008 R2的兼容。AIDA64已取代EVEREST。 AIDA64 Extreme Edition 软件特点 CPU,内存和磁盘基准 AIDA64 实现了一个64位...

    Windows 缩略图外壳扩展插件 SageThumbs 2.0.0.23 中文多语免费版.zip

    在 64 位 Windows 上用于 32 位 SageThumbs 的插件”。 因此,如果没有安装 XnView,则可以手动创建此文件夹并解压缩插件。 只是不要忘记,插件和 SageThumbs 需要相同的“位容量”。 故障排除 要修复不需要的 ...

    PCHunter32/PCHunter64

    PC Hunter 是在原 XueTr 的基础上重新开发而来,XueTr 只支持 32 位操作系统,而 PC Hunter 不仅支持 32 位的 2000、XP、2003、Vista、2008、Win7、Win8,还支持 64 位的 Win7、Win8 系统,那么针对64位的 Windows 7...

Global site tag (gtag.js) - Google Analytics