Почему 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 ?

  • Где программа устанавливает на linux?
  • Как я могу установить python-dev без sudo?
  • Поиск точной информации, полученной установщиками
  • Установка XP из одного раздела
  • Как установить Windows XP с USB-накопителя?
  • Автоматическая установка Windows 8.1 ISO
  • Есть ли способ изменить значение по умолчанию как 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-разрядные приложения могут всегда использовать эту переменную среды и не нуждаются в какой-либо условной логике, на основе которой они работают.

  • Как я могу прочитать статус SMART на моем жестком диске в Windows 7?
  • Можно сохранить процесс как файл дампа на диск, а затем перезагрузить процесс позже?
  • WOW (Windows в Windows) Запуск 32-разрядных приложений в Windows 7
  • Как отключить переключаемую графику от переключения на мощный GPU при зарядке ноутбука?
  • Можете ли вы динамически изменять размер окна командной строки Windows?
  • Доступ к считывателю смарт-карт хоста через подключение к удаленному рабочему столу
  • 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, все будет работать, но имейте в виду это тонкое изменение при изучении файловой системы!

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