К вопросу запуска 32-битных приложений на 64-битных системах


      Сейчас все больше программного обеспечения переносится на 64-битные системы Windows. При этом разработчики старались обеспечить обратную совместимость и работу 32-хбитных приложений в таких системах.

      Но не всегда 32-битное приложение соизволяет запуститься и нормально работать. Для решения вопросов совместимости есть соответствующие разделы документации и соответствующие инструменты. Но не всегда все так сложно. Вот несколько указаний как можно поправить дело.

      Во-первых, надо понимать, что система 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 <Имя скрипта>

      Третий факт. Если на конкретной системе нужно запускать все скрипты в 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» %*

 

      Надеюсь, эти нехитрые приемы избавят вас от головной боли при переносе приложений на 64-битные системы.

Реклама

комментариев 7

  1. Здравствуйте! У меня вопрос: возможно ли таким методом поставит драйвер 32 битного устройства (сканера) на виндоус 8 64 бит

    • Если у вас не получилось запустить драйвер сканера штатным образом, то вряд ли помогут какие-то ухищрения.
      Но надо отметить, что эмуляция 32-х битного режима в Windows 8 x64 сделана лучше, чем в Windows 7 x64. Вы можете попробовать сделать ручную регистрацию dll-файлов, но скорее всего это не даст нужного результата, т.к. есть еще проблема взаимодействия i32-драйвера с x64-приложениями — и как это будет в вашем случае без тестирования не понять.

  2. Здравствуйте! Извините если вопросы будут банальными))) Я столкнулся с такой проблемой… у меня 2 ноутбука, практически одинаковые по характеристикам…
    На обоих стоит лицензионный Windows, на одном 32бит, на другом 64бит.
    Столкнулся запуском 32битной игры. На 32битной Винде она работает прекрасно, на 64битной не работает….
    Как я понял из статьи я могу зарегистрировать работу 32битной DLL в 64 разрядной системе.. Но в папке с игрой таких DLL файлов несколько десятков…. Мне необходимо провести данную операцию (регистрацию DLL) со всеми DLL файлами из игры??? И необходимо ли регистрировать другие файлы типа EXE??? Или есть другие способы запуска??

    • Тут может быть масса проблем: например, даже пути к файлам могут не совпадать. Обычно игры очень капризны в отношении системы. Самое лучшее поискать решение вопроса на форумах посвященных вашей игре — наверняка не один вы с такой проблемой.

  3. супер. искал долго, переделывал код, закидывал в виртуал — ничего непомогло. Спасибо автору.

  4. Вообщем такая проблема, поставил 1С , но при попытке поставить базы на данную программу выдает не совместимость 32-х и 64-х разрядных систем. https://yadi.sk/i/hAKP3C5PdNDTG
    Есть ли решение этой проблемы ???

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: