
В Windows 11/10 современных версий вы можете встретить три основных архитектуры исполняемых файлов и библиотек DLL — x86 (32-бит), x64 (64-бит), ARM64.
В некоторых случаях может потребоваться узнать архитектуру конкретного двоичного файла, не запуская его. В этой инструкции подробно о способах сделать это, если возникла такая необходимость.
Sigcheck
Прежде чем приступить, отмечу, что если речь идёт об EXE-файле программы и вы его уже запустили, достаточно открыть «Диспетчер задач» (правый клик по кнопке «Пуск» — «Диспетчер задач»), перейти на вкладку «Сведения» (Подробности) и посмотреть значение в столбце «Платформа» для соответствующего процесса:

Если столбец не отображается, нажмите правой кнопкой мыши по заголовку любого столбца и включить отображение в диалоговом окне «Выбрать столбцы».
Один из самых простых способов получения информации о разрядности (архитектуре) исполняемого файла или DLL — утилита Sigcheck из Microsoft Sysinternals. Она предназначена для других целей, но прекрасно подойдёт и для рассматриваемой задачи:
- Скачайте Sigcheck с официального сайта и распакуйте в удобное расположение.
- Запустите командную строку (от имени администратора, если требуется просмотр информации о файлах в системных папках).
- Перейдите в папку с распакованным архивом с помощью команды
cd путь_к_папке
- Введите команду (для запуска в x64 версии Windows)
sigcheck64 "путь_к_файлу"
и вы сразу увидите результат, включающий в себя архитектуру файла в поле MachineType:

В архиве также доступны варианты программы для 32-бит систем (sigcheck.exe) и для ARM (sigcheck64a.exe), используйте в команде тот файл, который соответствует установленной на вашем компьютере ОС.
Windows PowerShell
Архитектура исполняемых файлов указывается в их заголовке и потенциально мы можем увидеть эту информацию даже в блокноте или в любом HEX-редакторе. Но проще будет автоматизировать задачу.
Достаточно создать следующий скрипт PowerShell (расширение .ps1, сохранить в кодировке ANSI для правильного отображения русского языка):
Write-Host "=== Определитель архитектуры файлов (EXE/DLL) ===" -ForegroundColor Cyan Write-Host "Можно просто перетаскивать файлы в это окно." -ForegroundColor Cyan while ($true) { Write-Host "`nВведите путь к файлу (или введите 'Exit' для выхода):" -ForegroundColor White $path = Read-Host ">" if ($path -match "^(?i)exit$") { Write-Host "Выход из программы..." -ForegroundColor DarkGray break } $path = $path.Trim('"', "'", " ") if (-Not (Test-Path -Path $path -PathType Leaf)) { Write-Host "Ошибка: Файл не найден!" -ForegroundColor Red continue } try { $stream = [System.IO.File]::OpenRead($path) $reader = New-Object System.IO.BinaryReader($stream) $stream.Seek(60, [System.IO.SeekOrigin]::Begin) | Out-Null $peOffset = $reader.ReadInt32() $stream.Seek($peOffset, [System.IO.SeekOrigin]::Begin) | Out-Null $signature = $reader.ReadUInt32() if ($signature -ne 0x00004550) { Write-Host "[-] Это не корректный EXE/DLL файл Windows!" -ForegroundColor Red continue } $machine = $reader.ReadUInt16() switch ($machine) { 0x014C { Write-Host "[+] Архитектура: 32-bit (x86)" -ForegroundColor Yellow } 0x8664 { Write-Host "[+] Архитектура: 64-bit (x64)" -ForegroundColor Green } 0xAA64 { Write-Host "[+] Архитектура: 64-bit (ARM64)" -ForegroundColor Magenta } 0x01C4 { Write-Host "[+] Архитектура: 32-bit (ARM)" -ForegroundColor DarkYellow } 0x0200 { Write-Host "[+] Архитектура: 64-bit (Intel Itanium IA-64)" -ForegroundColor Gray } default { Write-Host "[?] Архитектура: Неизвестна (Hex-код: 0x$($machine.ToString('X4')))" -ForegroundColor Gray } } } catch { Write-Host "[-] Ошибка при чтении файла: $_" -ForegroundColor Red } finally { if ($reader) { $reader.Close() } if ($stream) { $stream.Close() } } }
Запустить его и либо указывать пути к файлам, либо просто перетаскивать их на открывшееся окно, получая информацию о разрядности:

Примечание: если PowerShell не запускает скрипт из-за политики безопасности, введите команду
Set-ExecutionPolicy RemoteSigned
подтвердите выполнение, после чего файлы .ps1 будут исправно запускаться.
Утилита File
И ещё одна простая небольшая утилита для определения типа файлов — File. Версия для Windows доступна для загрузки на этом сайте.
Порядок использования аналогичен таковому для Sigcheck:
- Переходим в папку с file.exe, в случае расположения установки по умолчанию команда будет иметь следующий вид:
cd C:Program Files (x86)GnuWin32bin
- Вводим команду
file "путь_к_интересующему_файлу"
- Вывод будет отличаться: для 32-бит файлов вы увидите «PE32 executable», для большинства x64 файлов — «PE32+ executable» (в случае ARM64 также будет указание на архитектуру Aarch64). Дополнительно отображается информация о том, является ли приложение консольным или графическим (GUI) и дополнительная информация:

Надеюсь, те, кому требовалась такая информация, смогли найти в материале подходящий для себя способ определения архитектуры, для которой был скомпилирован исполняемый файл Windows.