Как я могу определить разрядность ОС с помощью Perl в Windows?

Используя Perl, как я могу определить, работает ли моя программа на Windows на 32 бита или Windows на 64 бита?

Действительно ли там какой-либо API доступен?

Я могу думать о нескольких опциях..

  1. Проверьте PE_HEADER некоторого файла окон (например: c:\windows\explorer.exe) - возможно, я могу использовать детали в том, Как я могу протестировать окна dll, чтобы определить, являются ли это 32 бита или 64 бита?

  2. Проверьте на существование c:\program files(x86) - если это существует затем, это - ОС на 64 бита. Еще это - окна OS на 32 бита.

Есть ли какой-либо хороший способ сделать это? Какой-либо API, доступный в Perl?

11
задан Community 23 May 2017 в 11:52
поделиться

3 ответа

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;

Вывод:

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

Обратите внимание, что неверно идентифицирует процессор моего ноутбука как 64-битный ( см. Процессор Intel® Core ™ Duo T2300 - отчет об ошибке подан).

9
ответ дан 3 December 2019 в 07:37
поделиться

Переменная PROCESSOR_ARCHITECTURE имеет значение "x86" в 32 битах

.
-1
ответ дан 3 December 2019 в 07:37
поделиться

Возможно, вы можете просто проверить некоторые переменные окружающей среды:

см. В HOWTO: обнаруживать уточнение процесса .

3
ответ дан 3 December 2019 в 07:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: