Почему Windows 7 устанавливает 64-разрядные приложения в папку Program Files (x86)? Могу ли я изменить поведение?

Я использовал 64-разрядную версию Windows 7 с CTP и столкнулся с несколькими проблемами с приложениями, которые устанавливаются в папку C:\Program Files (x86) . Какая цель состоит в том, чтобы иметь 2 разных каталога Program Files?

Каждая программа, которую я установил, перешла в папку C:\Program Files (x86) . Не похоже, что приложение 32 или 64 бит. Почему 64-разрядные приложения не размещаются в C:\Program Files ?

Есть ли способ изменить значение по умолчанию как C:\Program Files ? Разве это все испортит, если я просто поместил все в C:\Program Files ?

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

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

Изменить переменные среды: (для простоты используйте только английские значения переменных по умолчанию.) На 64-битной машине %ProgramFiles% будет C:\Program Files а новой переменной %ProgramFiles(x86)% будет C:\Program Files (x86) . Итак, если у вас есть 32-разрядная программа, которая должна найти путь к папке, в который она будет установлена, вам нужно будет проверить, работает ли она в 32-разрядной или 64-разрядной версии Windows, чтобы Чтобы знать, какую переменную среды использовать. Любые 32-разрядные приложения, которые были написаны без этого рассмотрения, должны быть обновлены для правильной работы на 64-битной машине. Таким образом, даже используя переменные среды, обратная совместимость нарушена.

Кроме того, %ProgramFiles(x86)% не существует в 32-разрядных версиях Windows. Если это так, то 32-разрядные приложения могут всегда использовать эту переменную среды и не нуждаются в какой-либо условной логике, на основе которой они работают.

3 Solutions collect form web for “Почему Windows 7 устанавливает 64-разрядные приложения в папку Program Files (x86)? Могу ли я изменить поведение?”

Причина этого заключается в том, что многие старые установщики либо не понимают новую файловую структуру, а plonk все в каталоге стандартных файлов программ, или вы смотрите на смарт-программу с несколькими 32-битными компонентами, которые копируются там.

Лучше всего загрузить новую программу – например, x64 Winrar и просто посмотреть, где она устанавливается, чтобы исключить проблему с вашей машиной.

Что касается messing stuff – может, но это действительно зависит от программы, нет ни одного ответа, который подходит всем … у некоторых небольших компактных программ с несколькими файлами не должно быть проблем, где, если вы говорите о Office , Adobe или любой другой «набор» или большую программу, скорее всего, не удастся, поскольку у них есть много общих компонентов, которые являются перекрестной архитектурой.

Если вы используете что-либо другое, кроме %ProgramFiles% (или CSIDL_PROGRAM_FILES или в Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) .NET Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) ), вы все равно в беде, поскольку пользовательские установки могут иметь программы, установленные под другими томами (например, D: ), А международные установки часто имеют другие папки по умолчанию.

  • Испанская Windows: C:\Archivos de Programa ,
  • Французская Windows: C:\Programmes ,
  • Немецкая Windows: C:\Programme ,
  • Шведская Windows: C:\Program

и т.п.

Обратите внимание, что в 64-разрядных версиях Windows 7 (это может также относиться и к другим версиям новой ОС, но я могу только подтвердить это для 64-разрядной версии Win 7), существует разница между расположением aparent вашего% ProgramFiles% В проводнике и в DOS.

В Windows 7 фактическое местоположение физической папки% ProgramFiles% (и связанной с ней переменной% ProgramFiles (x86)% environmentemnt) исправлено в соответствии с английской версией ; Т.е. «C: \ Program Files» и «C: \ Program Files (x86)», но проявляется в эксплоите, локализированном соответствующим образом.

Предоставить конкретный пример; На шведском Windows 7 64-bit install, если вы откроете Explorer и посмотрите на системный диск (обычно C 🙂 вы видите папки « Программа » и « Программа (x86) ». Ввод% ProgramFiles% в адресную строку переводит вас в «C: \ Program».

Однако, если вы открываете поле DOS и набираете SET, вы увидите, что фактическое значение% ProgramFiles% – это «C: \ Program Files», а не программа «C: \ Program». Дальнейшее изучение с помощью CD и DIR вы можете видеть, что физически это «C: \ Program Files»

Мораль заключается в том, что если вы используете универсальные переменные или программу через API, все будет работать, но имейте в виду это тонкое изменение при изучении файловой системы!

  • Существуют ли какие-либо преимущества для работы 64-разрядной ОС на 4 ГБ ОЗУ?
  • Автоматизация сканирования графических файлов для коррупции
  • Windows 7 x64 сообщает 8.00GB установленный баран, но только 3.47Gb полезный
  • Windows 7 64-бит, показывающий 12 ГБ (7,99 ГБ)
  • Запуск 64-разрядных программ на 32-битной системе
  • Windows не может проверить цифровую подпись для драйверов, необходимых для этого устройства
  • На PCIe 1.0 64-разрядная графическая карта может быть совместима с 32-разрядной ОС (Windows 7 32bits)
  • Как отключить спящий режим через CMD?
  • У меня есть 32-разрядная или 64-разрядная версия?
  • Почему существуют 32-разрядные версии Windows 8?
  • Не может быть папка Acess на внешнем жестком диске HD
  • Запустить приложение, совместимое только с 32-разрядной на 64-разрядной машине
  • Interesting Posts

    Windows 7: Событие 55 Структура файловой системы на диске повреждена и непригодна для использования

    Как указать текущее местоположение файла пакета (.command) в Mac OS X

    Изменение разрешений для файлов Windows 7 из командной строки

    Драйвер устройства чтения карт не установлен правильно, но тот же самый драйвер, используемый для работы

    Как заставить монитор пойти прямо на черное на сцене?

    Google Chrome не удаляет историю просмотров

    Как настроить принтер WI-FI?

    Перенос почты: пересылка писем в учетную запись IMAP

    Ведение веб-сайтов, зная, где я живу

    Ntoskrnl.exe! _misaligned_access ест много CPU при простоях

    Как добавить параметры контекстного меню в последней версии Chrome?

    Отключение функциональных клавиш в Windows 8 с помощью Autohotkey

    Утилита Windows Split Desktop

    Могу ли я заменить жесткий диск SSD на жесткий диск с нормальным диском без аннулирования гарантии?

    Сделать ваш ПК точкой доступа WIFI?

    Давайте будем гением компьютера.