【问题标题】:How can my Perl script know it is running under Win64?我的 Perl 脚本如何知道它在 Win64 下运行?
【发布时间】:2010-11-29 14:04:12
【问题描述】:

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

【问题讨论】:

    标签: perl winapi registry win64


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      感谢本 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 位 win 上运行 32 位应用程序,您需要参考 PROCESSOR_ARCHITEW6432。

      【讨论】:

        【解决方案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

        【讨论】:

          【解决方案4】:

          另一种方法,虽然有点复杂,是检查 Windows API 函数IsWow64Process。在this question 的答案中给出了如何做到这一点的示例(在 Delphi 中)。

          【讨论】:

            【解决方案5】:
                my @CPUIdentifierArray = split ' ', $ENV{PROCESSOR_IDENTIFIER};
                my %ArcHash        = ('x86' => 32, 'AMD64' => 64, 'Intel64' => 64);
                my $Arch           = $ArcHash{$CPUIdentifierArray[0]};
            

            返回 32 或 64

            【讨论】:

              猜你喜欢
              • 2010-10-12
              • 2020-04-01
              • 2017-07-28
              • 2011-04-06
              • 2010-09-26
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多