Как получить программные файлы x86 env variable?

Я хотел бы знать, как я могу отобразить расположение программных файлов (x86) в командной строке. Я использую Windows 7 64bit.

Я пробовал:

echo %programfiles(x86)% и echo %programfiles%,
оба из которых отображаются только C:\Program Files

Когда я вручную проверил реестр,
HKLM/Software/Microsoft/Windows/CurrentVersion,
programfilesdir указывает на C:\Program Files и

HKLM/Software/WOW64/Microsoft/Winodws/CurrentVersion,
programfilesdir указывает на C:\Program Files (x86).

Но почему я всегда показываюсь с C:\Program Files??

Ответ 1

На 64-разрядной машине, работающей в 64-разрядном режиме:

  • echo %programfiles% == > C:\Program Files
  • echo %programfiles(x86)% == > C:\Program Files (x86)

На 64-разрядной машине, работающей в 32-разрядном (WOW64) режиме:

  • echo %programfiles% == > C:\Program Files (x86)
  • echo %programfiles(x86)% == > C:\Program Files (x86)

На 32-разрядной машине, работающей в 32-разрядном режиме:

  • echo %programfiles% == > C:\Program Files
  • echo %programfiles(x86)% == > %programfiles(x86)%

Ответ 2

Другая важная переменная среды:

% ProgramW6432%

Итак, на 64-разрядной машине, работающей в 32-разрядном (WOW64) режиме:

  • echo% programfiles% == > C:\Program Files (x86)
  • echo% programfiles (x86)% == > C:\Program Files (x86)
  • echo% ProgramW6432% == > C:\Program Files

От Wikipedia:

Переменная% ProgramFiles% указывает на каталог Program Files, который хранит все установленные программы Windows и другие. по умолчанию в англоязычных системах используется "C:\Program Files". В 64-битном выпусков Windows (XP, 2003, Vista), есть также % ProgramFiles (x86)%, который по умолчанию соответствует "C:\Program Files (x86)" и % ProgramW6432%, который по умолчанию соответствует "C:\Program Files". % ProgramFiles% зависит от того, будет ли процесс, запрашивающий переменная среды сама по себе является 32-разрядной или 64-разрядной (это вызвано 64-разрядное перенаправление Windows-on-Windows).

Ссылка: http://en.wikipedia.org/wiki/Environment_variable

Ответ 3

На 64-битной машине Windows, echo% programfiles (x86)% печатает C:\Program Files (x86)

Ответ 4

ИМХО, один момент, который отсутствует в этом обсуждении, заключается в том, что какую бы переменную вы не использовали, она всегда будет указывать на соответствующую папку. Это становится критичным в тех редких случаях, когда Windows установлена на диск, отличный от C: \

Ответ 5

Я попробовал несколько вариантов этого, которые я нашел в Интернете, и никто из них не работал. Я пытался исправить рег-проблему с Subtitle Creator.

После некоторых проб и ошибок, вот тот, который работал у меня в Windows 7 64-bit.

  • В меню "Пуск" Windows введите CMD в поле поиска.
  • Щелкните правой кнопкой мыши файл cmd.exe и выберите "Запуск от имени администратора".
  • При появлении запроса введите пароль администратора.
  • Теперь используйте эту команду: % systemroot%\SysWoW64\regsvr32 "C:\Program Files (x86)\SubtitleCreator\SCSubtitleFilter.ax"

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