Program files x86 что такое: Чем отличаются папки «Program Files (x86)» и «Program Files»

В чем разница между папками «Program Files (x86)» и «Program Files» в Windows | PROCompy.ru

Вы наверняка видели на своем компьютере папки «C:\Program Files» и «C:\Program Files (x86)». И наверняка замечали, что программы устанавливаются как в одну паку, так и в другую. Давайте разберемся, почему так.

32-битная и 64-разрядная Windows

Изначально Windows была доступна только в 32-разрядной версии. В данных версиях мы видим только папку «C:\Program Files», которая является рекомендуемым местом для устанавливаемых программ.

В 64-разрядных версиях Windows 64-разрядные приложения устанавливаются в папку Program Files. Однако 64-разрядные версии Windows также поддерживают 32-разрядные программы, и Microsoft не хочет, чтобы 32-битное и 64-битное программное обеспечение смешивались в одном месте. Таким образом, 32-разрядные программы по умолчанию устанавливаются в папку «C: \ Program Files (x86)».

Windows запускает 32-разрядные приложения в 64-разрядных версиях Windows с использованием WOW64. Когда вы запускаете 32-разрядную программу в 64-разрядной версии Windows, уровень эмуляции WOW64 плавно перенаправляет доступ к файлу с «C:\Program Files» на «C:\Program Files (x86)».

Что хранится в каждой папке

Таким образом, в 32-разрядной версии Windows у вас есть только папка «C:\Program Files», которая содержит все установленные 32-разрядные программы.
В 64-разрядной версии Windows 64-разрядные программы хранятся в папке «C:\Program Files», а 32-разрядные программы хранятся в папке «C:\Program Files (x86)».

Вот почему разные программы устанавливаются в разные папки.

Почему они разделяются?

Функция совместимости, предназначенная для старых 32-разрядных программ, которые могут не знать, что 64-разрядная версия Windows вообще существует, поэтому Windows исключает их общение с 64-битным кодом напрямую.

32-разрядные программы не могут загружать 64-разрядные библиотеки ( DLL-файлы ) и могут вылетать, если они попытались загрузить определенный DLL-файл и обнаружили 64-битную версию вместо 32-разрядной. То же самое касается 64-разрядных программ. Наличие независимых программных файлов для разных архитектур процессоров предотвращает подобные ошибки.

Например, предположим, что Windows просто использовала бы одну папку Program Files. 32-разрядное приложение будет искать файл DLL Microsoft Office, найденный в C:\Program Files\Microsoft Office, и попытаться загрузить его. Однако, если у вас установлена 64-разрядная версия Microsoft Office, приложение будет аварийно завершено и не будет работать должным образом, т.к. оно не сможет найти DLL вообще, потому что 64-разрядная версия Microsoft Office будет располагаться по адрему C:\Program Files\Microsoft Office, а 32-разрядное приложение будет искать в C:\Program Files (x86)\Microsoft Office.

Это также помогает, когда разработчик создает как 32-битную, так и 64-разрядную версии приложения, особенно если они должны быть установлены сразу в некоторых ситуациях. 32-разрядная версия автоматически устанавливается в C:\Program Files (x86), а 64-разрядная версия автоматически устанавливается в C:\Program Files. Если Windows использовала одну папку, разработчику приложения пришлось бы установить 64-разрядную папку в другую папку, чтобы разделить их. И, вероятно, не было бы реального стандарта, где разработчики устанавливали разные версии.

Почему 32-битная папка называется (x86)?

Вы не всегда будете видеть «32-разрядные» и «64-битные». Вместо этого вы иногда видите «x86» и «x64» для обозначения этих двух разных архитектур. Это потому, что на ранних компьютерах использовался чип Intel 8086. Исходные чипы были 16-битными, но более новые версии стали 32-битными. «X86» теперь относится ко всем «версиям» до 64-битной архитектуре — будь то 16-разрядная или 32-разрядная. Новую 64-битную архитектуру так же этого называют «x64».

Папка «Program Files (x86)», это папка для программ с использованием старой архитектуры процессора x86. Заметим, однако, что 64-разрядные версии Windows не могут запускать 16-разрядный код .

Это обычно не имеет значения

Обычно не имеет значения, хранятся ли файлы программы в Program Files или Program Files (x86). Windows автоматически устанавливает программы в правильную папку, поэтому вам не нужно об этом думать. Программы отображаются в меню «Пуск» и функционируют нормально, независимо от того, где они установлены. Обе 32-разрядные и 64-разрядные программы должны хранить ваши данные в папках, таких как AppData и ProgramData, а не в любой папке Program Files. Просто позвольте вашим программам автоматически решать, какую папку Program Files использовать.

Иногда вам нужно знать, где хранится программа. Допустим, вы хотите войти в свой каталог Steam для резервного копирования некоторых файлов. Вы найдете его в C:\Program Files (x86), так как Steam — это 32-разрядная программа.

Если вы не знаете какая версия программы у вас установленна 32 или 64-битная, то вы можете посмотреть в диспетчере задач Windows.

В 64-разрядных версиях Windows 32-разрядные программы помечены дополнительным «(32-bit)» текстом, давая вам подсказку, что вы найдете их в C:\Program Files (x86).

определение папки Program Files (x86) или Program Files

zbz
Новичок

Z

определение z-порядка для для гуи элементаОбщие вопросы по AutoIt3

O

Определение координат курсора мышки на экранеОбщие вопросы по AutoIt3

S

Определение нажатой кнопки на клавиатуре — 1н раз, 2ва раза, долгое нажатиеСтол заказов1

D

Определение числа на сайтеСтол заказов0
Определение дочерней папкиРегулярные выражения и прочее4

определение z-порядка для для гуи элемента
Определение координат курсора мышки на экране
Определение нажатой кнопки на клавиатуре — 1н раз, 2ва раза, долгое нажатие
Определение числа на сайте
Определение дочерней папки

Операционная система Заявка ИЗВЕСТНЫЙ ID Путь по умолчанию Эквивалент CSIDL
32 бита 32 бита FOLDERID_ProgramFiles %SystemDrive%\Program Files CSIDL_PROGRAM_FILES
32 бита 32 бита FOLDERID_ProgramFilesX86 %SystemDrive%\Program Files CSIDL_PROGRAM_FILESX86
32 бита 32 бита FOLDERID_ProgramFilesX64 (не поддерживается в 32-разрядных операционных системах) Неприменимо Неприменимо
64 бит 64 бит FOLDERID_ProgramFiles %SystemDrive%\Program Files CSIDL_PROGRAM_FILES
64 бит 64 бит FOLDERID_ProgramFilesX86 %SystemDrive%\Program Files (x86) CSIDL_PROGRAM_FILESX86
64 бит 64 бит FOLDERID_ProgramFilesX64 %SystemDrive%\Program Files Нет
64 бит 32 бита FOLDERID_ProgramFiles %SystemDrive%\Program Files (x86) CSIDL_PROGRAM_FILES
64 бит 32 бита FOLDERID_ProgramFilesX86 %SystemDrive%\Program Files (x86) CSIDL_PROGRAM_FILESX86
64 бит 32 бита FOLDERID_ProgramFilesX64 (не поддерживается для 32-разрядных приложений) Неприменимо Неприменимо