Определяет Windows как 32- или 64-разрядную

#x86 #64-bit #autoit #cpu-architecture

#x86 #64-разрядная #автоматический запуск #архитектура процессора

Вопрос:

Это код, который у меня есть на данный момент:

 #include <MsgBoxConstants.au3>
If FileExists(@HomeDrive amp; "Program Files (x86)") Then
   $arc = 64
Else
   $arc = 32
EndIf
MsgBox("Hello", "Bit", "The computer that the program is been run on is a " amp; $arc amp; "bit one.")
  

На моем компьютере будет указано, что он 32-разрядный, когда он равен 64. Итак, я взглянул на путь и создал новый код:

 #include <MsgBoxConstants.au3>
If FileExists(@HomeDrive amp; "Program Files (x86)") Then
   $arc = 64
Else
   $arc = 32
EndIf
$path = @HomeDrive amp; "Program Files (x86)"
MsgBox("Hello", $path, "The computer that the program is been run on is a " amp; $arc amp; "bit one.")
  

Это показывает путь и, похоже, все в порядке. Где я ошибаюсь?

Ответ №1:

Вам нужно прочитать @OSArch макрос.

Возвращает одно из следующих значений: «X86», «IA64», «X64» — это тип архитектуры текущей операционной системы.

Комментарии:

1. Для архитектуры процессора вам следует использовать макрос @CPUArch.

Ответ №2:

Кто-нибудь знает, где я ошибаюсь.

Согласно документации — Макросы:

@OSArch Возвращает одно из следующих значений: «X86», «IA64», «X64» — это тип архитектуры текущей операционной системы.

@CPUArch Возвращает «X86», когда процессор является 32-разрядным, и «X64», когда процессор 64-разрядный.

Пример:

 Global Const $g_sTpl = 'OS  : %snCPU : %sn'
Global Const $g_sMsg = StringFormat($g_sTpl, @OSArch, @CPUArch)

ConsoleWrite($g_sMsg)
  

Ответ №3:

Попробуйте это :

 #include <MsgBoxConstants.au3>
if FileExists (@HomeDriveamp;"Program Files (x86)") then
   $arc=64
Else
   $arc=32
EndIf
MsgBox("Hello", "Bit", "The computer that the program is been run on is a "amp;$arcamp;"bit one.")
  

Или это :

 #include <MsgBoxConstants.au3>
if FileExists (@HomeDriveamp;"Program Files (x86)") then
   $arc=64
Else
   $arc=32
EndIf
$path=@HomeDriveamp;"Program Files (x86)"
MsgBox("Hello", $path, "The computer that the program is been run on is a "amp;$arcamp;"bit one.")
  

Ваш код не сработал, потому что вы не установили флажок обратной косой черты.