Из сегодняшнего:
Не запускается 32-битное приложение на 64-битной платформе.
По идее оно должно быть совместимо и
работать как тут, так и там.
Для решения вопросов совместимости есть соответствующие разделы
документации и соответствующие инструменты.
Но не всегда все так сложно - можно обойтись "малой
кровью".
Необходимо понимать, что система x64 поддерживает работу 32-битных приложений и для этого эмулирует подходящее окружение. В частности для этого есть специальные разделы реестра в ветке SysWOW64, с которыми работают все 32-битные приложения, в том числе там регистрируются 32-битные COM-приложения.
Но есть еще такой малоизвестный факт (не
каждый это знает или помнит): системные исполняемые модули на диске так же
присутствуют в двух видах: 64-битные по обычным путям %systemroot%, а 32-битные
по пути %systemroot%\SysWOW64.
Вопрос - Как это использовать?
Если к примеру я хочу
зарегистрировать 32-битную DLL, то нужно вызывать:
%systemroot%\SysWOW64\regsvr32.exe <Имя DLL>
Если я хочу запустить VB-скрипт, который создает
32-битные COM-объекты (например, Internet Explorer или Word), то нужно
вызывать:
%systemroot%\SysWOW64\cscript.exe <Имя скрипта>
Если на конкретной
64-битной системе нужно запускать все скрипты в 32-битном режиме, то можно
поменять ассоциацию в реестре. Ключи реестра можно подсмотреть в статье KB248121:
HKEY_CLASSES_ROOT\JSEFile\Shell\Open2\Command
HKEY_CLASSES_ROOT\JSFile\Shell\Open2\Command
HKEY_CLASSES_ROOT\VBEFile\Shell\Open2\Command
HKEY_CLASSES_ROOT\VBSFile\Shell\Open2\Command
HKEY_CLASSES_ROOT\WSFFile\Shell\Open2\Command
(Все значения наверное лучше не менять - только для нужного
скриптового языка)
Пример:
Старое значение:
Default = C:\Windows\System32\CScript.exe “%1″ %*
Новое значение:
Default = C:\Windows\System32\ SysWOW64\CScript.exe “%1″ %*