我的Perl脚本如何知道它在Win64下运行?

时间:2009-09-18 18:10:56

标签: perl winapi registry win64

如何让我的Perl脚本检测到它在64位Windows机器上运行,即使它是32位perl?

5 个答案:

答案 0 :(得分:6)

this question。您检查%PROCESSOR_ARCHITECTURE%环境变量。

答案 1 :(得分:4)

感谢Ben S.

从您关联的问题中的链接:msdn blog on how to dectect process bitness

产生以下代码: 打印“WIN64?:$ ENV {PROCESSOR_ARCHITECTURE} \ n”; 打印“WIN64?:$ ENV {PROCESSOR_ARCHITEW6432} \ n”;

以下输出(xp64上的32位perl)

WIN64?:x86

WIN64?:AMD64

如果您在64位获胜时运行32位应用程序,则需要参考PROCESSOR_ARCHITEW6432。

答案 2 :(得分: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

答案 3 :(得分:1)

另一种方法,虽然涉及更多,但是要检查Windows API函数IsWow64Process。在this question的答案中给出了如何执行此操作的示例(在Delphi中)。

答案 4 :(得分:0)

    my @CPUIdentifierArray = split ' ', $ENV{PROCESSOR_IDENTIFIER};
    my %ArcHash        = ('x86' => 32, 'AMD64' => 64, 'Intel64' => 64);
    my $Arch           = $ArcHash{$CPUIdentifierArray[0]};

返回32或64