如何在Windows上使用Perl确定操作系统的位数?

San*_*osh 11 windows perl 64-bit

使用Perl,如何确定我的程序是在32位Windows还是64位Windows上运行?

有没有可用的API?

我可以想到几个选择..

  1. 检查一些Windows文件的PE_HEADER(例如:) c:\windows\explorer.exe- 也许我可以使用详细信息如何测试windows dll以确定它是32位还是64位?

  2. 检查是否存在c:\program files(x86)- 如果存在则则为64位操作系统.否则它是一个32位Windows操作系统.

这样做有什么好办法吗?Perl中可用的任何API?

Sin*_*nür 9

Sys :: Info看起来很有希望:

#!/usr/bin/perl

use strict; use warnings;
use Sys::Info;

my $info = Sys::Info->new;

my $cpu = $info->device('CPU');

printf "%s (%s bit)\n", scalar $cpu->identify, $cpu->bitness;

my $os = $info->os;

printf "%s (%s bit)\n", $os->name(long => 1), $os->bitness;
Run Code Online (Sandbox Code Playgroud)

输出:

C:\Temp> t
Genuine Intel(R) CPU T2300 @ 1.66GHz (64 bit)
Windows XP Service Pack 3 build 2600 (32 bit)

请注意,它错误地将我的笔记本电脑的CPU识别为64位(请参阅提交的英特尔®酷睿™双核处理器T2300 -bug报告).