Home > itblogs > «Program Files» vs. «Program Files (x86)».

«Program Files» vs. «Program Files (x86)».

August 15th, 2006

Всему свое время: время разбрасывать грабли и время наступать на них…

Первое, к чему привыкаешь, работая на 64-битной версии Windows это то, что 32-битные и 64-битные приложения разнесены по разным каталогам: первые используют «Program Files (x86)» и «%windir%\SysWOW64», тогда как вторые – «Program Files» и «%windir%\System32». Более того, все (за небольшим исключением) обращения из 32-битных приложений к «%windir%\System32» перенаправляются в «%windir%\SysWOW64», защищая тем самым систему от засорения 32-битными компонентами.

Логично было бы ожидать, что точно также все обращения из 32-битных приложений к «Program Files» перенаправляются в «Program Files (x86)», однако это не так. На самом деле ничего не мешает 32-битным приложениям использовать каталог «Program Files». Иными словами, приложения должны сами заботиться о корректной работе с путями. И, как выясняется, это поле густо усыпано граблями.Помимо элементарных вещей вроде hard-coded путей попадаются и сложные случаи. Например Windows shell использует одинаковый идентификатор CSIDL_PROGRAM_FILES как для «Program Files», так и для «Program Files (x86)». Это может стать проблемой если путь сначала приводится к «каноническому» виду, а затем используется 32-битными и 64-битными компонентами одновременно. Вы скажете что так никто не делает? Гм. Я тоже так думал.

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

Какой из этого всего вывод? Я не знаю. Видимо – набившее оскомину «не делайте неверных предположений».

Tags:
  1. November 15th, 2006 at 21:55 | #1

    После прочтения ваших заметок возник вопрос .) Не могли бы вы описать какие проблемы встают при использовании x64-windows-xp при повседневной работе? Есть ли что-то, из-за чего не стоит ставить его на домашний компьютер? (просто запланирован апгрейд и размышляю какую лицензию взять .)

    Спасибо заранее.

  2. Not a kernel guy
    November 15th, 2006 at 22:04 | #2

    Первая проблема – драйвера. С выходом Vista ситуация явно улучшилась. Вторая – не все программы адекватно реагируют на нестандартное окружение. В принципе, если не возникнет проблемя с драйверами, то никаких серьезных неудобств не возникает.

    Я попробую написать об этом подробнее отдельным постом, когда руки дойдут.

  3. November 19th, 2006 at 01:35 | #3

    Спасибо за поясения .)

Comments are closed.