Проверка разрядности DLL или EXE файла

  • Автор темы Автор темы Samik
  • Дата начала Дата начала

Samik

Администратор
Команда форума
12 Фев 2015
3 272
8
1 491
Недавно был спор о разрядности DLL файлов, возможно кто-то успел прочитать об этом.
Если честно, я некогда даже не интересовался с темой как определить разрядность файла, но вот пришлось.

Есть несколько методов проверки разрядности файла и самая точная это поле Machine в заголовке PE-файла:
0x014c — это всегда 32-бит (x86)
0x8664 — это всегда 64-бит (x64)
Поле "Machine" там всегда есть и она не может быть пустой!

Так же можно посмотреть информацию о файле просто в свойствах, в самом Windows. Например в поле "Версия продукта", рядом с самой версией может быть написана разрядность, но не всегда! То есть здесь, информация о разрядности может быть, а может и не быть!
У меня Windows 11 Pro 64bit, в нем на 32бит файлах она нечего не пишет, а если файл 64бит, то так и пишет "64-Bit", хотя нашел парочку файлов 64бит, в свойствах которого нет надписи "64-Bit"! Нашел один 32бит DLL файл, в свойствах которого вообще не было не какой информации.
Один словом, свойства файла не очень доверенный источник такой информации.

Если знаете ещё более точный метод определение разрядности, прошу делится.

Вот я написал маленькую программу, с помощью которого можно с легкостью определить разрядность DLL и EXE файлов. Программа проверяет именно поле Machine в заголовке PE-файла.
 

Вложения

Приветствую! Еще раз за все труды - СПАСИБО тебе добрый человек )))
Может не в тему, но как ИТшник - пользуюсь (года наверное с 2015) таким сервисом, для многих вопросов:
suip.biz/ru/?act=mat

подгружаем файл - там вся подноготная будет...
 
  • Like
Реакции: Chapii, Klaid и Samik