Почему 2 папки program files и program files x86
Перейти к содержимому

Почему 2 папки program files и program files x86

  • автор:

В чем разница между Program Files и Program Files (x86)

Всем привет! Если Вы работает в 64-разрядной версии Microsoft Windows, то могли заметить, что есть две разные, но похожие папки: Program Files, которая содержит 64-разрядные приложения и программы, и Program Files (x86), содержащая 32-разрядные приложения.

Разница между Program Files и Program Files (x86)

Причиной разделения является обратная совместимость, так как две эти архитектуры принципиально разные. Но Windows может использовать эмулятор WoW64 со старыми 32-битными программами, чтобы заставить их нормально работать в 64-битной среде.

Совет: Если у Вас возникли проблемы с поиском программ в папке Program Files, попробуйте поискать их в Program Files (x86).

Почему она называется x86?

Этот термин происходит от названия платформы х86, которая впервые возникла из процессора Intel 80386.

Why are there separate Program Files and Program Files (x86) directories?

On Windows editions that support x86 emulation, there are two directories for program files. The C:\Program Files directory is for programs in the native system bitness, and the the C:\Program Files (x86) directory is for programs that run under the x86-32 emulator. But why are they separate directories? Why can’t we combine them? If you have 32-bit Contoso and 64-bit LitWare, you can still put them in C:\Program Files\Contoso and C:\Program Files\LitWare , and they won’t bother each other.

That’s true, but it does create problems if a program is available in both 32-bit and 64-bit versions, such as Microsoft Office or Visual Studio. You couldn’t install both versions side-by-side; you’d have to pick one.

And it so happens that Windows itself comes with a lot of programs that are available in both 32-bit and 64-bit versions, like Internet Explorer and WordPad. Those programs could have installed themselves into separate directories like C:\Program Files\Internet Explorer and C:\Program Files\Internet Explorer (x86) to avoid the conflict, but then that runs into compatibility issues with apps that do things like launch %ProgramFiles%\Internet Explorer\iexplore.exe and then start manipulating the Internet Explorer process expecting it to be the same bitness as the program that did the launching.

This sounds sort of like a lazy answer, seeing as this problem could be solved with sufficient application of application compatibility shims. But application compatibility shims are really a solution of last resort, because by their nature, they can be applied only to programs where the problem has already been identified. If there’s a way you can structure your system so that these problems never arise in the first place, then you don’t have to worry about identifying the programs that suffer from the problem: You fixed all of them at once!

Yet another problem is with the pesky Common Files subdirectory under Program Files . This is a directory that is intended for the case of separately-installed programs which nevertheless share some things in common. For example, Contoso might have two products, Contoso Standard and Contoso Deluxe, and both of the programs use the Contoso Framework. The Contoso Framework files can go into the C:\Program Files\ Common Files\ Contoso subdirectory.

If the 32-bit and 64-bit directories were combined into a single C:\Program Files directory, then you would have a mix of 32-bit and 64-bit components in C:\Program Files\ Common Files\ Contoso , and that makes nobody happy. Whoever installs first wins, and whoever installs second gets errors.

Keeping the two Program Files directories separate avoids this problem. C:\Program Files\ Common Files\ Contoso contains the 64-bit Contoso Framework files, and C:\Program Files (x86)\ Common Files\ Contoso contains the 32-bit Contoso Framework files.

After I wrote up this answer, I realized that I already answered it some time ago, so here’s the video:

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

В чем разница между папками Program Files (x86) и Program Files в Windows

Вы наверняка видели на своем компьютере папки «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)».

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

В чем разница между папками Program Files (x86) и Program Files в Windows

Таким образом, в 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)?

В чем разница между папками Program Files (x86) и Program Files в Windows

Вы не всегда будете видеть «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.

В чем разница между папками Program Files (x86) и Program Files в Windows

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

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

Весьма вероятно, на вашем компьютере Windows Вы обнаружите две папки «Program Files» и «Program Files (x86)». Если вы соскучитесь, вы увидите, что некоторые из ваших программ установлены в одну папку, а некоторые – в другую.

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

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

Эта папка Program Files является рекомендуемым местом, где установленные программы должны хранить исполняемые файлы, данные и другие файлы. Другими словами, программы устанавливаются в папку Program Files.

Программные папки Program Files x86 и Program Files в 64-битной Windows

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

Windows запускает 32-разрядные приложения в 64-разрядных версиях Windows с использованием WOW64.

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

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

Таким образом, в 32-разрядной версии Windows у вас есть только папка «Program Files». Она содержит все установленные вами программы, все из которых являются 32-разрядными.

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

Вот почему разные программы распределяются между двумя папками Program Files, кажущимися случайными. В папке «Program Files» находятся 64-разрядные, а в папке «Program Files (x86)» – 32-разрядные приложения.

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

Это функция совместимости предназначена для старых 32-разрядных программ. Эти 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» теперь относится к до 32-битной архитектуре – будь то 16-разрядная или 32-разрядная. Новую 64-битную архитектуру называют «x64».

Проверка разрядности используемой версии Windows

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

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

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

Если вы используете переносное приложение, оно может запускаться из любой папки в вашей системе, поэтому вам не нужно беспокоиться о том, где его разместить.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *