Как узнать разрядность приложения
В настоящее время в связи с распространением 64-разрядных процессоров и операционных систем, перед разработчиками программного обеспечения часто встаёт вопрос о программном определении его разрядности.
Это может быть вызвано как декоративными причинами («автоматически» показывать разрядность пользователю, например, «Моя Программа 1.0 64-разрядная версия») так и необходимостью задействовать в различных архитектурах различные алгоритмы с целью максимально эффективного использования их особенностей и при этом сохранить единую кодовую базу.
Простейшие способы
В Delphi для того чтобы определить разрядность приложения достаточно получить размер не типизированного указателя с помощью стандартного приёма.
В результате будет возвращён размер не типизированного указателя в байтах. Для перевода в биты достаточно умножить полученный результат на 8. В случае 32-разрядного приложения результат будет равен 4 (после умножения 32). В случае же 64-разядного приложения результат будет равен 8 (после умножения 64).
Для C++ существует аналогичный приём.
Конечно, это немного более громоздко, чем в случае Delphi или C++.
Всё эти методы предельно просты и доступны даже для начинающих. Однако все они имеют один общий недостаток. При их использовании в программе компилируются одновременно оба варианта кода (и для 32 и для 64-разрядного приложения). В случае небольших проектов или несущественных отличий в алгоритмах между версиями это может оказаться не критично. В противном случае значительный размер программы будет составлять неиспользуемый код. Это приведёт неоправданному увеличению размеров исполняемого файла программы или файла библиотеки в случае DLL. По этой причине все вышеперечисленные методы для реализации специального кода для конкретной архитектуры по большому счёту не пригодны.
Условная компиляция
К счастью, для этого существует альтернатива в виде директив условной компиляции.
В Delphi имеется стандартный символ условной компиляции WIN32, который обозначает 32-разрядную версию операционной системы Windows. С помощью этого символа и директивы компилятора $IFDEF можно указать, какой код будет компилироваться в случае 32-разрядного приложения, а какой в случае 64-разрядного.
Установить десктопное приложение проще простого, главное, чтобы тип исполняемого файла соответствовал архитектуре процессора. На 64-битные системы можно устанавливать и 32- и 64-битные приложения, тогда как на 32-битные Windows возможна установка только 32-битных программ. Обычно в источниках указывается разрядность приложения, но вы легко можете узнать ее и сами, воспользовавшись консольной утилитой от Марка Руссиновича SigCheck.
Также вы можете распаковать утилиту в любое удобное расположение, но тогда при работе в командной строке придется каждый раз прописывать к ней полный путь.
Чтобы определить разрядность любого исполняемого файла, откройте командную строку или PowerShell и выполните команду следующего вида:
Команда вернет набор сведений о файле — описание, имя разработчика, версию и т.д.
Будет среди них и разрядность, указываемая в параметре MachineType.
Если на вашем компьютере установлен архиватор 7-Zip, воспользуйтесь для определения разрядности исполняемого файла им.
Принцип похожий, откройте командную строку и сначала перейдите в расположение 7z.exe , обычно это C:\Program Files\7-Zip и выполните такую команду:
Разрядность будет показана в значении параметра CPU.
Если решите использовать PowerShell , в начале команды нужно добавить «./» без пробелов и кавычек, таков синтаксис. И не забываем о двойных прямых кавычках, в них необходимо заключать все пути с пробелами и кириллицей.
Установить программы в Windows 10 довольно просто. Вам всего лишь убедиться, что вы устанавливаете правильный тип приложения. Если вы используете 32-разрядную версию Windows, приложение тоже должно быть 32-разрядным. Аналогично, если вы используете 64-битную Windows, приложение должно быть 64-битным.
Хорошие разработчики приложений не только предоставляют ссылки на разные версии, они также соответственно разрядности называют EXE-файл, чтобы пользователи по названию смогли определить, 32-битный или 64-битный. Вы удивитесь, но не существует быстрого способа проверить, является ли EXE 32-битным или 64-битным.
Что такое разрядность
Более подробно о разрядности мы рассказывали в статье «Что такое разрядность системы Windows».
Как узнать разрядность программы в Windows
Я покажу 3 простых способа проверить, является ли программа 32 или 64-битной. Первый способ самый простой. Другие методы определения разрядности требуют установки приложений, однако оба приложения бесплатны, и есть вероятность, что одно из них уже установлено в вашей операционной системе.
Проверить разрядность .EXE в свойствах файла
Это способ узнать разрядность файла программы не требует установки дополнительных утилит.
- Кликните правой кнопкой мышки на исполняемом файле, разрядность которого нужно проверить.
- Из выпадающего меню выберите пункт «Свойства».
- Перейдите на вкладку «Совместимость». В разделе «Режим совместимости» установите флажок «Запустить эту программу в режиме совместимости для».
- Откройте раскрывающееся меню со списком операционных систем:
- Если в список операционных систем входит Windows XP, как показано на снимке экрана, то программа 32-битная.
- Если список начинается с Vista, тогда программа 64-битная.
Не забудьте снять флажок «Запускать эту программу в режиме совместимости для:»
Определить разрядность .EXE с помощью SigCheck
Скачайте бесплатную утилиту командной строки SigCheck и распакуйте ее в папку C:\Windows.
Откройте командную строку с обычными правами пользователя и введите следующую команду:
Большинство пользователей ПК используют 64-разрядную версию Windows 10. Если вы также используете 64-разрядную версию Windows 10 , вы можете убедиться, что все установленные программы являются 64-разрядными для оптимальной производительности.
Есть несколько преимуществ запуска 64-битной версии программы на 64-битной установке Windows 10. 64-разрядная программа может получить доступ к большему объему памяти, чем 32-разрядная версия, поскольку она поддерживает более 4 ГБ памяти. Из-за этого 64-битное приложение в 64-битной Windows может работать немного быстрее.
Как вы, вероятно, уже знаете, установка 64-битной Windows 10 позволяет устанавливать и запускать программы как 32-битной, так и 64-битной архитектуры. Однако вы можете устанавливать и запускать только 32-разрядные программы в 32-разрядной (x86) версии Windows 10.
При оптимизации установки Windows 10 для повышения производительности вы можете узнать, является ли установленная программа 32-разрядной или 64-разрядной. К счастью, выяснить, является ли установленная программа 32-битной или 64-битной, довольно просто.
Могу ли я обновить 32-битные приложения до 64-битных?
Точно так же, как вы не можете обновить 32-разрядную версию Windows до 64-разрядной , вы не можете обновить 32-разрядные приложения до 64-разрядных и наоборот.
Вам придется удалить 32-разрядное приложение, а затем установить 64-разрядное, если оно доступно.
ВАЖНО! Используйте это руководство, только если вы используете 64-разрядную версию Windows 10. Поскольку 32-разрядная установка Windows не поддерживает установку 64-разрядных программ, все программы, установленные в 32-разрядной версии Windows, являются только 32-разрядными.
Проверьте, является ли программа 32-битной 64-битной через диспетчер задач
Если вы используете сборку 19541 или новее Windows 10, проверить архитектуру программы довольно просто. Диспетчер задач в Windows 10 build 19541 или более поздней версии имеет возможность отображать программную архитектуру. Вот как проверить, является ли программа 64-битной или 32-битной в диспетчере задач.
Шаг 1. Откройте диспетчер задач, щелкнув правой кнопкой мыши пустое место на панели задач и выбрав пункт « Диспетчер задач».
Шаг 2. Разверните диспетчер задач, если вы получите меньшую версию, щелкнув опцию «Подробнее».
Шаг 3: Щелкните правой кнопкой мыши заголовок столбца (как показано на рисунке ниже), выберите « Выбрать столбцы» и выберите «Архитектура» из списка.
Вкладка Details диспетчера задач теперь показывает вкладку Architecture, которая отображает архитектуру всех запущенных программ.
Шаг 4: Наконец, запустите программу, архитектуру которой вы хотите проверить. Загляните в столбец Архитектура, чтобы узнать архитектуру программы.
Другой способ проверить, является ли программа 64-разрядной или 32-разрядной в Windows 10
Шаг 1: Откройте проводник и перейдите к этому компьютеру. Дважды щелкните диск, на котором установлена Windows 10, чтобы увидеть, помимо прочего, папки Program Files и Program Files (x86).
Обратите внимание, что Program Files (x86) создается только в 32-разрядной версии Windows 10.
Шаг 2: Теперь проверьте папки Program Files и Program Files (x86) на предмет записи приложения, архитектуру которого вы хотите выяснить. Если приложение или папка приложения присутствует в Program Files, это означает, что установленная программа является 64-разрядной версией.
Аналогично, если приложение находится в папке Program Files (x86), это 32-разрядное приложение, установленное на 64-разрядной установке Windows 10. Вы можете проверить разработчика, доступна ли 64-битная версия приложения. Если доступно, удалите существующий и установите 64-разрядный.
Само собой разумеется, что вы не можете установить 64-битные программы на 32-битной Windows 10. Итак, если вы работаете с 32-битной Windows 10, все программы, установленные на ней, являются только 32-битными.
Читайте также: