如何让我的 Perl 脚本检测到它是否在 64 位 Windows 机器上运行,即使它是 32 位 perl?
问问题
1839 次
5 回答
6
看到这个问题。你检查%PROCESSOR_ARCHITECTURE%
环境变量。
于 2009-09-18T18:18:01.117 回答
4
谢谢本 S。
从您链接到的问题中的链接: msdn blog on how to decect process bitness
产生以下代码: print "WIN64?: $ENV{PROCESSOR_ARCHITECTURE} \n"; 打印 "WIN64?: $ENV{PROCESSOR_ARCHITEW6432} \n";
以及以下输出(xp64 上的 32 位 perl)
WIN64?: x86
WIN64?: AMD64
似乎如果您在 64 位 win 上运行 32 位应用程序,则需要参考 PROCESSOR_ARCHITEW6432。
于 2009-09-18T20:32:07.217 回答
3
if (($ENV{'PROCESSOR_ARCHITECTURE'} eq "AMD64") or
($ENV{'PROCESSOR_ARCHITEW6432'} eq "AMD64")) {
$arch = "win64";
} else {
$arch = "win32";
}
参考:http: //blogs.msdn.com/b/david.wang/archive/2006/03/26/howto-detect-process-bitness.aspx
于 2011-01-20T17:52:40.850 回答
1
另一种方法,虽然涉及更多一点,是检查 Windows API 函数IsWow64Process
。这个问题的答案中给出了一个如何做到这一点的例子(在 Delphi 中)。
于 2009-09-21T23:10:15.733 回答
0
my @CPUIdentifierArray = split ' ', $ENV{PROCESSOR_IDENTIFIER};
my %ArcHash = ('x86' => 32, 'AMD64' => 64, 'Intel64' => 64);
my $Arch = $ArcHash{$CPUIdentifierArray[0]};
它返回 32 或 64
于 2014-01-24T15:43:10.837 回答