как узнать разрядность файла
Как проверить, является ли EXE-файл 32- или 64-битным в Windows 10
Установить десктопное приложение проще простого, главное, чтобы тип исполняемого файла соответствовал архитектуре процессора. На 64-битные системы можно устанавливать и 32— и 64-битные приложения, тогда как на 32-битные Windows возможна установка только 32-битных программ. Обычно в источниках указывается разрядность приложения, но вы легко можете узнать ее и сами, воспользовавшись консольной утилитой от Марка Руссиновича SigCheck.
Также вы можете распаковать утилиту в любое удобное расположение, но тогда при работе в командной строке придется каждый раз прописывать к ней полный путь.
Чтобы определить разрядность любого исполняемого файла, откройте командную строку или PowerShell и выполните команду следующего вида:
Команда вернет набор сведений о файле — описание, имя разработчика, версию и т.д.
Будет среди них и разрядность, указываемая в параметре MachineType.
Если на вашем компьютере установлен архиватор 7-Zip, воспользуйтесь для определения разрядности исполняемого файла им.
Разрядность будет показана в значении параметра CPU.
Установить программы в Windows 10 довольно просто. Вам всего лишь убедиться, что вы устанавливаете правильный тип приложения. Если вы используете 32-разрядную версию Windows, приложение тоже должно быть 32-разрядным. Аналогично, если вы используете 64-битную Windows, приложение должно быть 64-битным.
Хорошие разработчики приложений не только предоставляют ссылки на разные версии, они также соответственно разрядности называют EXE-файл, чтобы пользователи по названию смогли определить, 32-битный или 64-битный. Вы удивитесь, но не существует быстрого способа проверить, является ли EXE 32-битным или 64-битным.
Что такое разрядность
Более подробно о разрядности мы рассказывали в статье «Что такое разрядность системы Windows».
Как узнать разрядность программы в Windows
Я покажу 3 простых способа проверить, является ли программа 32 или 64-битной. Первый способ самый простой. Другие методы определения разрядности требуют установки приложений, однако оба приложения бесплатны, и есть вероятность, что одно из них уже установлено в вашей операционной системе.
Это способ узнать разрядность файла программы не требует установки дополнительных утилит.
Не забудьте снять флажок «Запускать эту программу в режиме совместимости для:»
Скачайте бесплатную утилиту командной строки SigCheck и распакуйте ее в папку C:\Windows.
Откройте командную строку с обычными правами пользователя и введите следующую команду:
Как узнать 32 или 64 битная программа?
Иногда необходимо узнать, является ли файл 32 или 64 битной программой прежде, чем его запустить или устанавливать. На веб-сайте источника не указана разрядность программы. Или, может, у вас в дистрибутивах и каталогах с портативными программами находятся приложения, которые никак не помечены, а вам необходимо знать на каких системах их можно запустить. Или же же вам просто хочется убедится, по собственным причинам, в том, что программа имеет ту или иную разрядность. Какие бы причины не были, у вас всегда будет в запасе два способа это проверить.
Примечание: Учтите, что вполне возможна ситуация, когда инсталлятор 32- разрядный, а программа 64 разрядная. Верно и обратное.
Программа EXE 64bit Detector для определения 32 или 64 бита
Существует множество способов узнать, как файл был скомпилирован. Например, технические специалисты могут использовать шестнадцатеричные редакторы для прочтения бинарных кодов. Но, обычным пользователям такой способ покажется чересчур сложным. Поэтому, вы всегда можете воспользоваться программой под названием «EXE 64bit Detector». Этот инструмент предназначен для запуска в командной строке от имени администратора. Даже если вы слабо знакомы с командной строкой, то не волнуйтесь, данный инструмент очень легко использовать. Сайт разработчика и программу вы можете найти по этой ссылке (кнопка для скачивания в конце страницы). Но, предупреждаем, прежде, чем скачать утилиту, сайт несколько раз перенаправит вас. Поэтому будьте аккуратны и внимательны. Обращайте внимание по каким ссылкам вы щелкаете. Сказывается тяга задержать вас подольше у рекламных блоков, но, тем не менее, инструмент бесплатен и его достаточно скачать один раз. Утилита запускается во всех текущих версиях Windows.
Как уже говорилось, использовать утилиту очень просто. Откройте командную строку с правами администратора и введите следующую команду:
Параметр «-f» нужно обязательно указывать. И если Exe64bitDetector и тестируемая программа находятся в разных каталогах, то необходимо так же указывать полный путь до программы. Обратите внимание, что кроме информации о разрядности, программа так же показывает включены ли ASLR (случайное выделение места под модули в оперативной памяти), DEP (дополнительные проверки содержимого памяти для обеспечения безопасности) и SEH (механизм, предоставляющий доступ программе к таким исключениям, как деление на ноль, нарушения доступа к памяти и прочим). На рисунке ниже показан пример выполнения программы:
Пожалуй, единственная проблема данной утилиты заключается в том, что не каждый захочет возиться с командной строкой. Поэтому предлагаем вам более простой и не требующий дополнительного программного обеспечения метод определить разрядность программы.
Как проверить является ли файла 32 или 64 разрядным простым способом
Несмотря на то, что в 64-разрядной Windows существует два каталога для программ «Program files» (для 64-разрядных) и «Program files (x86)» (для 32-разрядных), наличие программы в том или ином каталоге не является достоверным признаком разрядности программы. Так как вы можете установить программу в любой каталог. Поэтому, стоит использовать следующий простой трюк:
Теперь, у вас всегда будут под рукой два способа, как узнать 32 или 64 битная программа.
Как узнать разрядность программы?
В статье рассматривается вопрос о том, как узнать или определить разрядность программы или приложения, запускаемых в Windows. Как увидеть именно архитектуру программы или утилиты?
Тот факт, что операционные системы идут в двух версиях разрядности, известен всем. 64-битная версия обработает большее количество памяти, производительность несравнимо выше – в общем, все прелести налицо. И вполне естественно, что, раз производитель предлагает оба варианта программ, ставить лучше именно подходящую под разрядность процессора и системы.
Ладно, поставили. Когда-то… А как теперь узнать разрядность программы, давно на Windows существующей? Ведь под 64-битную Windows 32-битные версии программ идут на ура. У вас-то какая установлена? Для того есть несколько способов.
Разрядность программы через папку, где она установлена
Самый логичный и простой вариант. Казалось бы, это и не проблема вовсе. Мол, “32-х битная версия не полезет в папку для 64-битных программ, и наоборот.” Не так всё просто. Но начните с того, что вам нужно найти исполнительный файл (.exe) программы с помощью проводника. Любым известным вам способом. Если у вас создан для программы ярлык, это сделать в разы проще:
Место расположения программы также легко вычислить с помощью Диспетчера задач Windows. Главное, чтобы программа была запущена и отображалась в Диспетчере. В меню Вид нужно найти пункт Выбрать столбцы… и указать на пункт Путь к образу:
Обратите внимание на папку, где лежит программа: Program Files. У меня установлена 64-битная Windows 7, а, значит, в эту директорию складываются (теоретически) только 64-битные версии. Ан нет. Так что такой способ (ориентир на папки Program Files или Program Files(х86)) подходит далеко не всегда.
А теперь представьте, что программа вообще установлена в произвольную папку: в корневой каталог, в папку Games или даже на Рабочий стол. А если вы любитель портативных версий? Как же быть?
Разрядность программы через Диспетчер задач
К сожалению, владельцы Windows 7 лишены следующей прямой возможности. А вот для “виндовозов” “десятки” разрабы включили в Диспетчер задач Windows 10 такую возможность. Повторите шаги по запуску программы и Диспетчера. В Диспетчере отправляемся во вкладку Подробности и оттуда щёлкаем по столбцу Имя правой мышкой:
Появится окно с возможностью Выбрать столбцы, и в этот раз просто выставим опцию Платформа:
Теперь в Диспетчере задач Windows появился новый столбец.
Однако и для владельцев Windows 7 тоже есть выход. Все вы наверняка знаете, что система предоставляет опцию запуска программы в режиме совместимости с предыдущими моделями Windows. Она, опция, есть в свойствах файла. Вот она, представлена в виде отдельной вкладки:
Разверните пункт Запустить программу в режиме совместимости. Если пункта про Windows 95 там нет, программа имеет 64-битную версию, если он там – перед вами 32-битный вариант программы. Взгляните – в той же Windows, в той же папке, но уже другой файл:
Разрядность программы через Блокнот
Как видите, разрядность программы обнаружить легко. Устанавливать ничего не нужно, а версию этими методами вы определите безошибочно.
Как я могу проверить DLL-файл Windows, чтобы определить, является ли он 32 бит или 64 бит? [дубликат]
этот вопрос уже есть ответ здесь:
Я хотел бы написать тестовый сценарий или программу, которая утверждает, что все DLL-файлы в данном каталоге имеют определенный тип сборки.
Я бы использовал это как проверку здравомыслия на конец процесса сборки на SDK, чтобы убедиться, что 64-разрядная версия каким-то образом не получила некоторые 32-разрядные DLL-файлы в нем и наоборот.
есть ли простой способ посмотреть на DLL-файл и определить его тип?
решение должно работать на xp32 и xp64.
5 ответов
подробности
DLL использует исполняемый формат PE, и не слишком сложно прочитать эту информацию из файла.
посмотреть этот статья MSDN о формате файла PE обзор. Вам нужно прочитать заголовок MS-DOS, а затем прочитать IMAGE_NT_HEADERS структура. Это содержит IMAGE_FILE_HEADER структура которая содержит информацию вам в члене машины который содержит одно из следующего значения
эта информация должна быть с фиксированным смещением в файле, но я все равно рекомендую обойти файл и проверить подпись заголовка MS-DOS и IMAGE_NT_HEADERS, чтобы убедиться, что вы справитесь с любыми будущими изменениями.
используйте ImageHelp для чтения заголовков.
вы можете также используйте API для ImageHelp для этого-загрузите DLL с LoadImage и LOADED_IMAGE структура, которая будет содержать указатель на структуру IMAGE_NT_HEADERS. Освободите LOADED_IMAGE с ImageUnload.
. или адаптировать этот грубый Perl скрипт
вот грубый скрипт Perl, который выполняет работу. Он проверяет, что файл имеет заголовок DOS, а затем считывает смещение PE из IMAGE_DOS_HEADER 60 байтов в файл.
затем он стремится к началу части PE, читает подпись и проверяет ее, а затем извлекает значение, которое нас интересует.
грубым способом было бы вызвать dumpbin с опцией headers из средств Visual Studio в каждой DLL и искать соответствующий вывод:
вы можете увидеть пару подсказок в этом выводе, что это 32-битная DLL, включая значение 14C, которое упоминает пол. Должно быть легко найти в сценарии.
Если у вас Cygwin установлен (который я настоятельно рекомендуем по разным причинам), вы можете использовать утилиту «файл» в DLL
который дал бы такой результат:
зависимость Walker рассказывает все (ну почти). http://www.dependencywalker.com/
насколько я помню, довольно просто увидеть все зависимости, т. е. модули dll, и начиная с appl. является суммой зависимостей, которые можно определить, является ли она полной x64, x32(x86) или немного каждой.
тип процессора, который модуль был построен для is в столбце «CPU». Большинство 64-разрядных aps все еще немного каждого, но 32-разрядный ap w/b все x86.
красивая программа для вундеркиндов / программистов, и это бесплатно.
просто запустите его и загрузите файл DLL:
в приведенном выше примере загруженная DLL является 32-разрядной.