Установить 32 разрядное приложение на 64. Windows XP x64: обещания и реальность

05.12.2020

В настоящее время подавляющее большинство продаваемых современных компьютеров и мобильных ПК имеют предустановленную Windows 7 64 bit. Это обусловлено тем, что они комплектуются достаточным количеством оперативной памяти – от 4 Гб и выше. Тем же пользователям, которые только собираются перейти на Windows 7 (как бы удивительно это не звучало в преддверии выхода Windows 8) и приобрести коробочную версию (BOX) определиться с выбором разрядности поможет эта статья, которая составлена в виде вопросов и ответов.

Преимущества 64-битной ОС.

Разрядность может быть 32 или 64 бита, но на экране обе версии Windows 7 выглядят одинаково. Возможности систем также идентичны: в комплекте те же дополнительные программы, например Windows Media Player или Paint. Однако «под капотом» все же есть существенные различия.

    Увеличенная рабочая скорость. С 64-битной версией Windows компьютер может обрабатывать за единицу времени в два раза больше данных, чем с 32-битной. При этом он использует расширенные возможности 64-разрядных процессоров, которые за один такт способны обрабатывать 64 бита данных (8 байт). Поэтому программы, оптимизированные для 64-битных ОС, умеют работать быстрее, чем их аналоги для процессоров, обрабатывающих всего 32 бита (4 байта) за один такт.

    Больше оперативной памяти. 32-битные версии Windows могут использовать максимум 4 Гб памяти, причем не вся она доступна программам. Например, 1 Гб занимает сама операционная система, к тому же до 1 Гб (в зависимости от ПК) резервируется для видеопамяти. Так что для самих программ остается не более 2 Гб. Если они «прожорливы», памяти может не хватить.

Для 64-битных версий Windows подобного ограничения нет. Максимальная рабочая память в Windows 7 Home Premium выросла до 16 Гб; версии Professional, Ultimate и Enterprise могут работать даже со 192 Гб. Благодаря большей доступной памяти Windows реже приходится выгружать разделы программ на сравнительно медленный жесткий диск (в файл подкачки), поэтому и компьютер работает быстрее.

Недостатки 64-битной ОС.

    Нужны новые драйверы. Все устройства требуют для 64-битной Windows 7 соответствующих драйверов (аналоги для 32-битной ОС работать не будут). Для современных устройств это обычно не проблема, но для устаревших моделей многие производители не разрабатывают 64-битные версии драйверов. Поэтому прежде чем переходить на 64-битную Windows, зайдите на веб-страницу производителя устройства и убедитесь, что для вашего оборудования доступна 64-битная версия драйвера.

    Требуется больше памяти. Многие структуры данных в 64-битных программах имеют размер 8 байт (64 бит). Поэтому программы занимают на 10–20% больше места на жестких дисках, чем соответствующие 32-битные версии с 4-байтными структурами. Потребность в оперативной памяти для 64-битного ПО также повышается – примерно на 15 процентов.

Поддерживает ли мой компьютер 64-разрядную версию Windows 7?

Большинство компьютеров, выпущенных за последние три года (то есть, после релиза Windows Vista) совместимы с 64-битной версией Windows 7. Исключение - системы с дешевыми процессорами, не поддерживающими 64-разрядные расширения AMD и Intel. В их числе - линейка процессоров Intel Atom с низким энергопотреблением и ранние модели Intel Core, в частности, Core Duo (не путать с Core 2 Duo). Если вы не знаете, какой процессор установлен на вашем компьютере и поддерживает ли он 64-разрядные операционные системы, воспользуйтесь бесплатной утилитой Intel Processor Identification Utility .

Периферийные устройства

Как и в случае с компьютерами, большинство периферийных устройств, выпущенных с момента релиза Windows Vista, совместимо с 64-разрядной версией Windows 7. А вот с устаревшей техникой это лотерея. Некоторые производители - в особенности поставщики сетевых карт и дисковых контроллеров - уже давно обеспечивают совместимость своих продуктов с 64-разрядными системами, поскольку им приходилось работать еще с 64-битными версиями Windows Server 2002-2003 годов выпуска. Старые устройства, не имеющие непосредственного отношения к дата-центрам (например, нестандартные устройства ввода, мультимедийную аппаратуру, некоторые принтеры), будет сложнее интегрировать, поскольку они разрабатывались в то время, когда 64-разрядные операционные системы для настольных компьютеров были редкостью. Лучше всего заранее проверить, выпустил ли производитель драйвер для 64-битной версии Windows 7, а если нет, существуют ли другие способы решения проблемы.

Можно ли использовать 32-битные драйверы в 64-разрядной версии Windows 7?

Нет. Драйвер устройства - это привилегированный код, который выполняется в том же адресном пространстве, что и ядро Windows, поэтому он должен соответствовать архитектуре ядра. Некоторые производители объединяют 32- и 64-битные драйверы в едином установщике, поэтому неопытному пользователю может показаться, что 32-разрядный драйвер работает под 64-битной версией Windows. Однако, несмотря на то, что 32-разрядные драйверы не поддерживаются непосредственно операционной системой, их все равно можно установить в Режиме Windows XP и использовать USB-принтеры и другие устаревшие устройства с интерфейсом USB в виртуальной машине Windows XP.

Доступен ли Режим Windows XP в 64-разрядной версии Windows 7?

Да, Режим Windows XP полностью поддерживается 64-битной версией Windows 7. Более того, применение монитора виртуальных машин (Virtual Machine Monitor, VMM) - в частности, такого продукта, как Windows Virtual PC 7, который лежит в основе Windows XP Mode - это один из немногих способов использования 32-разрядных драйверов устройств в 64-битной версии Windows. Единственная сложность заключается в том, что устройство должно обладать интерфейсом USB. Устаревшие приборы, требующие нестандартных карт расширения или ключей, скорее всего, не будут работать в Режиме Windows XP.

Что такое Режим Windows XP и как его запустить?

Проще всего сказать, что Режим Windows XP - это виртуальная машина под управлением Windows XP SP3, запущенная в Windows Virtual PC 7. Пользователи Windows 7 Professional (Профессиональная), Ultimate (Максимальная) и Enterprise (Корпоративная) могут загрузить ее бесплатно.

Если выразиться точнее, Режим Windows XP - это нативное 64-битное приложение (вернее, набор 64-разрядных служб и драйверов), которое создает отдельный нативный 64-битный процесс, эмулирующий среду 32-разрядной операционной системы.

Важно отметить, что Режим Windows XP позволяет создавать только 32-разрядную виртуальную среду, несмотря на то, что Windows Virtual PC само по себе - 64-битное приложение, запущенное в 64-разрядной версии Windows 7. В среде Windows Virtual PC (которая, по сути, является универсальным инструментом виртуализации с дополнительными функциями для поддержки Режима Windows XP) можно устанавливать 32-разрядные версии Windows XP, Vista или даже Windows 7, но невозможно использовать 64-битные версии ни одной из этих систем.

Можно ли запускать 32-битные приложения в 64-разрядной версии Windows 7?

Да, практически любое 32-битное приложение, поддерживаемое в Windows XP, можно без дополнительных модификаций запустить в 64-разрядной версии Windows 7. Для этого используется технология под неофициальным названием «Win32 on Win64» (коротко WOW), которая преобразует обращения к 32-битному API от исполняемых файлов устаревших программ в обращения к 64-битному API для обработки нативными подсистемами 64-разрядной операционной системы. В результате 32-битные приложения без проблем работают в 64-разрядной версии Windows 7, а благодаря оптимизации нынешнего поколения процессоров Intel и AMD - еще и на полной или почти полной скорости. Редкое исключение из этого правила составляют приложения, использующие один или несколько 32-разрядных проприетарных драйверов устаревших устройств, не имеющие 64-битных эквивалентов.

Стоит отметить, что WOW - не новая концепция. Похожая технология применялась в самых первых версиях Windows NT для поддержки устаревших 16-битных приложений Windows 3.xx.

Почему при установке 32-битных приложений в 64-разрядной версии Windows 7 не появляются новые записи в реестре?

В 64-битных версиях Windows Vista и Windows 7 для запуска 32-разрядных приложений используется технология WOW (см. выше). Она не только преобразует обращения к API, но и изолирует изменения, вносимые 32-битными приложениями, в специальном подразделе реестра на соответствующем уровне.

К примеру, если 32-битное приложение создает подраздел в папке

«HKEY_LOCAL_MACHINESoftware»

этот подраздел автоматически переносится в папку «Wow6432Node» в основном разделе «Software». В этой папке можно найти все подразделы и параметры приложения, автоматически перенаправленные сюда средствами WOW.

Обеспечивает ли 64-разрядная версия Windows 7 выигрыш в производительности?

Все зависит от того, как используется система. Если вы работаете с большими файлами или приложениями, потребляющими много оперативной памяти, 64-разрядная версия Windows, как правило, обеспечивает небольшой прирост производительности по сравнению с 32-разрядной версией на идентичном оборудовании, причем даже при использовании 32-битных приложений. Это связано с тем, что операционная система и драйверы устройств получают доступ к 64-битным расширенным реестрам процессора Intel или AMD, работающего в 64-разрядном расширенном режиме. Кроме того, 64-битная версия Windows 7 поддерживает установку большего объема оперативной памяти, чем 32-битная: 192 Гбайт во всех вариантах, кроме Home, по сравнению с 4 Гбайт во всех изданиях 32-битной Windows 7. Это позволяет значительно расширить возможности компьютера.

Почему 64-разрядная версия Windows использует больше оперативной памяти, чем 32-разрядная?

Любая 64-разрядная операционная система потребляет больше памяти, чем ее 32-разрядный аналог. Это связано с природой 64-битного кода: он использует более крупные внутренние структуры, которые, естественно, занимают больше места и в памяти, и на жестком диске. Поэтому неудивительно, что ISO-образы 64-битных версий Windows Vista и Windows 7 на 50-70% больше, чем образы 32-разрядных версий, а потребление физической памяти после загрузки у них составляет на 20-30% больше.

Имеет ли 64-разрядная версия Windows преимущество перед 32-разрядной с точки зрения безопасности?

Да. Большинство широко рекламируемых инициатив Microsoft по «укреплению» ядра, реализованных в Windows Vista, - например, PatchGuard или аппаратный запрет на выполнение кода (Data Execution Prevention) - актуально только для 64-разрядной версии системы. Кроме того, 64-битные версии Windows Vista и Windows 7 используют только драйверы с цифровыми подписями, что затрудняет для злоумышленников маскировку руткитов и эксплойтов под драйверы уровня ядра.

Можно ли обновить 32-разрядную версию Windows до 64-разрядной Windows 7?

Нет. На данный момент процедура обновления Microsoft не поддерживает смену процессорной архитектуры. Чтобы обновиться с 32-разрядной версии Windows, необходимо ее удалить, установить 64-битную Windows 7 на чистый диск, а затем перенести в новую операционную систему все свои данные и приложения.

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

В этой статье приводится обзор подсистемы Windows на Windows 64 (WOW64) и ее методов, которые позволяют Windows поддерживать 32-битные приложения на 64-битной системе.

Примечание : Первая попытка внедрить 64-разрядные системы была достаточно провальной. Жесткие ограничения и отсутствие реальных преимуществ давало о себе знать. На тот момент, даже драйвера под 64-разрядные системы было достаточно сложно найти. Не говоря уже о программах, на которых хоть как-либо была бы заметна разница. Снятие ограничения на 3Гб оперативной памяти, безусловно, сегодня сильное преимущество, но на тот момент это больше напоминало красивый слоган.

Устройство поддержки 32-битных приложений в 64-разрядной Windows

Windows 32 на Windows 64 (WOW64)

WOW64 эмулирует 32-битную Windows

В Windows 64, 32-битные приложения выполняются в эмулированной 32-разрядной операционной системе, которая называется Windows 32 на Windows 64, или WOW64 для краткости. Основной задачей WOW64 является перехват и обработка всех системных вызовов от 32-разрядных приложений.

Для каждого перехваченного системного вызова, WOW64 создает 64-разрядный системный вызов, превращая 32-битные структуры данных в подходящие 64-битные. В последствии, 64-битный системный вызов передается ядру операционной системы для обработки. Все полученные выходные данные 64-битного вызова будут преобразованы и переданы в том формате, на которое приложение рассчитывало. Другими словами, реальные запросы к ядру системы всегда 64-битные. Подсистема WOW64 лишь выступает в качестве посредника, приобразуя данные в подходящие форматы.

Как и 32-битные приложения, WOW64 выполняется от имени пользователя, так что ошибки, которые могут происходить во время преобразования системных вызовов, будут происходить на уровне пользователя. И никак не затронут 64-битное ядро операционной системы.

Тот факт, что WOW64, как и 32-битное приложение, выполняется в режиме пользователя, объясняет причину отсутствия поддержки 32-битных драйверов. Если говорить другими словами, то, для корректного запуска, драйверам требуется режим ядра, который не может обеспечить WOW64. Поэтому, если у вас 64-разрядная Windows, то все драйвера должны быть 64-битными.

Эмулятор WOW64 состоит из следующих 64-разрядных библиотек:

Примечание : Это единственные 64-разрядные библиотеки, которые загружаются в 32-разрядный процесс.

  • Wow64.dll - ядро инфраструктуры системы эмуляции. Линкует вызовы в точки входа Ntoskrnl.exe
  • Wow64Win.dll - линкует вызовы в точки входа Win32k.sys
  • Wow64Cpu.dll - переключает процессор между 32-битным и 64-битным режимом
  • Ntdll.dll - 64-битная версия Wow64.

Wow64.dll загружает 32-битную версию (x86) Ntdll.dll и все необходимые 32-битные библиотеки, которые в основном остались без изменений. Однако, некоторые их этих 32-разрядных библиотек все же были изменены, чтобы корректно исполняться в WOW64. Как правило, такие изменения были сделаны из-за того, что они используют оперативную память вместе 64-разрядными компонентами системы

Управление файлами и настройками реестра в WOW64

В дополнение к функциям перехвата и обработки системных вызовов, интерфейс WOW64 так же должен гарантировать, что файлы и параметры реестра 32-битных приложений будут храниться отдельно от файлов и ключей реестра 64-разрядных программ. Для достижения этой цели WOW64 использует два механизма. Перенаправление файлов и реестра, а так же дублирования ключей реестра. Перенаправление поддерживает логическое представление данных и отображает их так, как если бы приложение запускалось в 32-разрядной Windows. Дублирование ключей реестра гарантирует, что изменение ряда параметров, которые не зависят от разрядности, будут доступны как 32-битным, так и 64-битным приложениям.

Перенаправление файлов

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

Файлы 32-разрядных приложений, по умолчанию, устанавливаются в:

  • C:\Program Files(x86)

32-разрядные системные файлы устанавливаются в:

  • C:\WINDOWS\SysWOW64

Для 64-разрядных приложений, файлы устанавливаются в:

  • C:\Program Files
  • C:\WINDOWS\SYSTEM32

Механизм перенаправления WOW64 гарантирует, что запросы от 32-разрядных приложений к каталогам "C:\Program Files" и "C:\WINDOWS\SYSTEM32" будут перенаправлены на соответствующие каталоги для 32-битных версий.

Однако, существует одна проблема с перенаправлением файлов. Пользователи и разработчики должны быть в курсе этой особенности.

Многие 64-разрядные приложения все еще используют 32-битный режим и процедуры. И не учитывают это при создании инсталлятора . Для того, чтобы приложение было установлено правильно. т.е. в "C:\Program Files", программа установки должна сделать системный вызов к операционной системе, чтоб система приостановила механизм перенаправления файлов Wow64. А после установки сделать другой системный вызов, чтобы снова включить перенаправление. Если производить установку без остановки перенаправления, то программа будет установлена в "C:\Program Files (x86)". Классическим примером данной ошибки является 64-разрядная версия FireFox 3.5 под кодовым названием "Shiretoko", которая устанавливается в "C:\Program Files(x86)\Shiretoko". Конечно, Firefox по-прежнему будет нормально функционировать. Единственное, что вы не сможете сделать, так это изменить иконку приложения .

Примечание : Возможно, сейчас эту ошибку в Shiretoko уже исправили. Тем не менее, в ранних версиях было именно так.

Перенаправление реестра

Ключи реестра, специфические для 32-разрядных приложений, будут перенаправлены из ветки:

  • HKEY_LOCAL_MACHINE\Software
  • HKEY_LOCAL_MACHINE\Software\WOW6432Node

Так же, иногда, можно встретить записи реестра в другой ветке (хотя это необычно):

  • HKEY_CURRENT_USER\Software\WOW6432Node

Такой подход позволяет 32- и 64-битным приложениям нормально сосуществовать, без проблем с перезаписью настроек друг друга.

Дублирование реестра

Некоторые перенаправленные ключи и значения реестра необходимо дублировать. Это означает, что если 32-разрядное приложение вносит изменения в перенаправленном разделе реестра, то эти изменения необходимо так же применять и для веток 64-разрядных приложений. В данном случае действует принцип "кто последний, тот и прав". Например, если вы установите три приложения, привязывающие себя к одному и тому же расширению файла, то ассоциация с расширением файла должны быть с последним приложением.

  1. Установите 32-битное приложение, которое ассоциирует себя с расширением XYZ
  2. Установите 64-разрядную версию приложения, которая связывает себя с расширением файла XYZ
  3. Установите другое 32-битное приложение, которое ассоциирует расширение XYZ с собой

В результате этих действий, по двойному щелчку на файле с расширение XYZ в проводнике Windows должно открыться приложение, которое было установлено на 3-ем шаге. Ведь, именно оно последним ассоциировало себя с расширением.

Все это происходит прозрачно для 32-битных приложений в Wow64, которая самостоятельно перехватывает обращения и дублирует необходимые параметры и ключи реестра. Другими словами, 32-разрядные приложения могут выполнятся стандартным образом, необходимые изменения за них внесет Wow64.

Существует ряд ограничений подсистемы WOW64

Некоторые, но не все, 64-битные функции доступны 32-разрядным приложениям

Wow64 позволяет 32-разрядным приложениям использовать некоторые функции и возможности 64-битных систем. Например, при правильной настройке, такие приложения смогут использовать до 4Гб оперативной памяти. Доступ к другим функциям ограничен из-за особенности устройства 64-битных систем. Например, 64-битная ОС Windows поддерживает 64-битные логические операции. Тем не менее, 32-битные приложения не будут иметь доступ к ним, они смогут использовать только 32-битные логические операции.

Примечание : Основной причиной ограничений служит разница в представлении данных 32- и 64-битных приложений. 32-разрядное приложение попросту не рассчитано на 64-разрядные типы данных.

Нельзя смешивать между собой код (Code Injection) 32-битных и 64-битных приложений

В 64-битной ОС Windows нельзя запускать 32-битный код в 64-разрядном процессе, как и нельзя запускать 64-битный код в 32-разрядном процессе. Приложения, использующие инъекции кода (Code Injection) для добавления функциональности в существующие приложения, как правило, будут выдавать ошибки.

Этот факт объясняет, почему большинство 32-битных расширений оболочки Windows не запускаются под 64-разрядной Windows. Большинство таких расширений используют инъекцию кода (Code Injection) для встраивания в проводник Windows

WOW64 не поддерживает 16-разрядные инсталляторы

WOW64 обеспечивает поддержку 16-битных инсталляторов Microsoft, путем замены инсталлятора на совместимую 32-битную версию. Тем не менее, эта поддержка не распространяется на сторонние продукты. Так что, если вам нужно использовать старую программу, то, скорее всего, придется искать эмулятор или портативную версию.


Дополнительные возможности для запуска 32-битных приложений в Windows 64

Windows Virtual PC

Windows Virtual PC это бесплатное программное обеспечение, которое позволяет запускать несколько операционных систем на одном компьютере. Virtual PC обеспечивает специальную среду исполнения, которая поддерживает устаревшее оборудование и программное обеспечение, которое не будет определяться и запускаться в Windows 7. Все запущенные операционные системы под Virtual PC будут выполняться в виртуальной машине. Это означает, что запущенные операционные системы не будут знать о том, что они запущены в другой системе.

Системные требования и набор функциональности существенно различается между версиями Virtual PC и версиями Windows. Так что, прежде чем пытаться использовать Virtual PC, необходимо проверить, что программа поддерживает как вашу операционную систему, так и те ОС, которые будут на ней запущены. Например, одна из последних версий уже не поддерживает версии Windows ниже Windows XP SP3.

Режим Windows XP (XPM)

Режим Windows XP это конкретная и урезанная реализация Windows Virtual PC, которая поставляется с предустановленной копией Windows XP Professional SP3. Этот режим доступен только в версиях Enterprise, Ultimate и Professional Windows 7 64-бит.

Несмотря на то, какие возможности был бы должен представлять этот режим, многие, кто использовал XPM, настоятельно советуют использовать этот режим только в качестве последнего средства. По сравнению с другими продуктами виртуализации, производительность разочаровывает, а конфигурация по умолчанию вызывает ряд вопросов безопасности.

Примечание : К некоторым более дательным настройкам режима совместимости все же можно обратиться. Более подробную информацию вы можете найти в обзоре Как запустить старые программы на Windows 7 / Vista? (см. Microsoft Application Compatibility Toolkit).

Мультизагрузка ОС Windows

Вы можете установить более одной версии Windows на одном компьютере, с помощью мультизагрузчика. Например, установить 32-разрядную и 64-разрядную версии Windows рядом друг с другом. Каждая операционная система устанавливается на отдельный раздел диска, а менеджер загрузки устанавливается на разделе по умолчанию. Менеджер загрузки позволяет выбрать и запустить операционную систему, которую вы хотите сейчас использовать.

Хоть, вы и не можете одновременно использовать больше одной операционной системы, эта функциональность является достаточно полезной. По сравнению с виртуальными машинами, такой способ не имеет никаких проблем с совместимостью и такие системы гораздо легче настраивать и обслуживать. Кроме всего прочего, установив 32-разрядную версию рядом с 64-битной, вы сохраните возможность запускать 16-битные приложения.

Подытоживая сказанное о поддержке 32-бит в 64-разрядной Windows

Большинство 32-разрядных приложений будут вполне счастливо себя чувствовать в Windows 64. Основными исключениями будут:

  1. 32-разрядные драйверы устройств
  2. Приложения, которые не могут функционировать без 32-битных драйверов устройств, которые они используют. Яркими примерами являются антивирусы и другие программы для обеспечения безопасности.
  3. Расширения, которые используют инъекцию кода (Code injection). Например, оболочки для проводника Windows

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

Если вы никак не можете запустить 32-битное приложение, то рассмотрите вариант с виртуализацией или мультизагрузкой нескольких операционных систем.

Какие приложения быстрее 32-битные или 64-битные?

Этот вопрос звучит достаточно часто. Но, нет никакого общего правила или коэффициента умножения, поскольку все зависит от задач и используемых функций процессора.

Если сравнивать 32- и 64-разрядные приложения в своих родных средах, то 32-битное приложение, как правило, использует меньше памяти, чем эквивалентное 64-разрядное приложение. Это происходит потому, что 64-битные версии используют 64-битные структуры данных, которые занимают вдвое больше места. Дополнительный размер напрямую влияет на время запуска и закрытия программы, а так же на другие виды операций, связанных с доступом к дисковым накопителям. Обычно, это означает, что 32-разрядные приложения будут выполняться быстрее. Тем не менее, использование 64-битными программами особенностей 64-разрядного процессора потенциально позволяет приложению выполняться на 25% быстрее, по сравнению с 32-битными программами.

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

Рейтинг 5.00 (6 Голосов)


Это статья по мотивам вопросов на форумах: "Как мне вернуть строку из DLL?", "Как передать и вернуть массив записей?", "Как передать в DLL форму?".

Чтобы вам не тратить половину жизни на разобраться - в этой статье я принесу всё на блюдечке.

Темы этой статьи в разной степени уже не раз затрагивались в этом блоге, но в этой статье они собраны в кучу, приведены обоснования. Короче, ссылкой на эту статью можно кидаться в тех, кто разрабатывает DLL.

Важное примечание : статью нужно читать последовательно . Примеры кода приводятся только как примеры , на каждом шаге (пункте) статьи код примеров добавляется новыми подробностями. Например, в самом начале статьи нет обработки ошибок, указываются "классические" способы (типа, использования GetLastError , соглашения sdtcall и т.д.), которые по ходу статьи заменяются на более адекватные. Сделано так по той причине, чтобы "новые" ("необычные") конструкции не вызывали вопросов. Иначе при пришлось бы к каждому примеру вставлять примечание вида: "вот это обсуждается в том пункте ниже, а вот то - в этом вот". В любом случае в конце статьи есть ссылка на уже готовый код, написанный с учётом всего сказанного в статье. Можете просто его брать и использовать. А статья объясняет зачем и почему. Если вам не интересно "зачем и почему" - листайте в конец к заключению и ссылке на скачивание примера.

Мы покажем, каким образом можно сделать работу компьютера более быстрой, перейдя на 64-битную версию Windows 7.

Без проблем превратить современный ПК в настоящий «болид» может практически каждый пользователь. После установки операционной системы Windows 7 в 64-битной версии компьютер начинает работать быстрее, стабильнее и безопаснее.

Сегодня практически половина всех ПК, продаваемых с предустановленной «семеркой», оснащается 64-разрядным вариантом этой ОС. Но и для всех остальных пользователей, работающих с 32-битными операционными системами от Microsoft, переход на вариант с удвоенной разрядностью является оправданным. Мы расскажем, какие преимущества у вас после этого появятся, как подготовиться к модернизации, какие проблемы могут возникнуть и как их решать. При этом вам пригодится пакет 64-битных программ, размещенный на нашем DVD. В нем представлены многочисленные драйверы для принтеров, сканеров, видеокарт и прочие полезные утилиты. Также мы продемонстрируем, каким образом привязать к новой операционной системе старое «железо», для которого уже не выпускается новых драйверов. Кроме того, вы узнаете, как инсталлировать ПО, несовместимое с 64-битной Windows.

Переход: ощутимые преимущества


Самое главное достоинство 64-разрядных систем состоит в возможности использовать большой объем оперативной памяти. В зависимости от варианта ОС пользователю будут доступны до 192 Гбайт вместо 3, поддерживаемых в 32-битном варианте. Даниэль Меланхтон, технический советник при Microsoft, однозначно рекомендует: «Если у вас больше 2 Гбайт оперативной памяти, переходите на 64-битную версию ОС и ни о чем не думайте».


Мы проверили, какие преимущества на самом деле дает более быстрая архитектура операционной системы. Для этого на два ПК с процессорами Intel Core 2 Duo E6600 были установлены 32- и 64-разрядная Windows 7, а затем инсталлированы ресурсоемкие программы: графический редактор Photoshop CS5, архиватор 7-Zip и универсальный конвертер Mediacoder. Эти приложения загружали работой компьютеры, а мы контролировали демонстрируемую последними скорость.


Кроме того, в 64-разрядной ОС мы запускали как 32-, так и 64-битный вариант каждой программы. Таким образом были получены три результата, которые однозначно демонстрируют, что в Windows с архитектурой 64 бита соответствующие редакции ПО работают быстрее, чем 32-разрядные. Прирост скорости составляет до 15% (более точные данные вы найдете во врезке справа).

При этом преимущества 64битной ОС связаны не только с увеличением вычислительной мощности ПК, но и минимизацией рисков для его безопасности. Дело в том, что компьютер с более производительной операционной системой не подвержен атакам типа SSDT-Hooks нового поколения вирусов. Эти вредоносные программы выбирают точный момент между этапами проверки исполняемого кода, осуществляемой антивирусом, и размещают зловредный код на компьютере-жертве.

Программы: возможные проблемы


Программа Windows 7 Upgrade Advisor покажет, может ли ваш компьютер работать с более производительной архитектурой новой операционной системы Не всякий ПК подходит для установки ОС с 64-битной архитектурой, но, как правило, с ней способен работать любой компьютер моложе трех лет. Тем не менее перед началом инсталляции следует запустить бесплатную утилиту Microsoft Windows 7 Upgrade Advisor для проверки совместимости. Она наглядно продемонстрирует, годится ли «железо» вашего ПК для перехода на 64-битную ОС. Напоминаем, что апгрейд оправдывает себя, если на компьютере есть более 2 Гбайт оперативной памяти.

Если же объем RAM превышает 4 Гбайт, то переход на более производительную версию ОС просто обязателен - это позволит задействовать весь потенциал компьютера.


Онлайновая база данных PCIDatabase.com позволит определить производителя того или иного продукта либо найти всю информацию о периферийных устройствах, а также драйверы для них Если ПК активно используется вами в профессиональной деятельности, следует обязательно убедиться в наличии 64-битных версий программ, которые понадобятся вам в повседневной работе, или хотя бы в том, что имеющиеся 32-разрядные приложения совместимы с новой архитектурой операционной системы.

Большинство 32-битных утилит нормально функционируют в этой среде, но при этом могут возникать проблемы со скоростью их работы. Наш тест показал, что 32-разрядный вариант Photoshop CS5 обрабатывает фотографии в 32-битной ОС значительно быстрее, чем в 64-битной. Зато в последней максимальную скорость работы демонстрирует 64-разрядный Photoshop. На сегодняшний день инсталлятор этой программы предлагает оба варианта установки, так как не все дополнения совместимы с 64-битной версией - многие фильтры и плагины пока еще не функционируют в ней. Даже Internet Explorer работает в 64-разрядной ОС неидеально: доступны не все дополнения. Например, Adobe все еще не опубликовала финальную версию Flash-плагина для 64-битного браузера, как и Apple - для QuickTime. В связи с этим даже после перехода на ОС с новой архитектурой лучше оставить старую версию браузера.

Сама корпорация Microsoft вынуждена бороться с проблемами совместимости пакета Office. Дело дошло до того, что софтверный гигант не рекомендует использовать 64-битную редакцию этого продукта. Лучше всего инсталлировать 32-разрядный вариант в системе с архитектурой 64 бита. Специалисты Microsoft обосновывают это так: многие дополнения ориентированы на 32-битную редакцию программы, и это может вызвать проблемы при синхронизации смартфонов с Outlook. Кроме того, дополнительные хлопоты доставят пользователю 32-разрядные элементы управления Office, а также плагины и VBA. Если же использовать этот пакет только в связке с совместимыми 64-битными приложениями, то все работает стабильно. Но в любом случае использование 64-разрядного офисного пакета в соответствующей среде не дает существенных преимуществ - разве что большие таблицы в Excel будут рассчитываться немного быстрее. А вот Word и все остальные приложения потребляют так мало ресурсов, что в случае с ними вы вряд ли заметите, что объем оперативной памяти увеличился. Более подробную информацию о последней версии пакета Microsoft Office вы найдете в статье «Примеряем новый Office 2010» в CHIP №9 2010 на стр. 120.

Если же вы имеете дело с программой, которая категорически отказывается работать в 64-битной среде, выход есть: с помощью средств виртуализации инсталлируйте в Windows 7 версию XP (подробнее в конце статьи).

Аппаратные средства: в чем может быть подвох?


Информация о неустановленных драйверах и ID оборудования доступна в Диспетчере устройств Windows В принципе, если ваше «железо» не старше трех лет, трудностей с его использованием возникнуть не должно. Для большинства принтеров, фотоаппаратов и других периферийных устройств сегодня существуют 64-битные драйверы, которые обеспечивают безупречную работу в высокопроизводительной операционной системе.

Однако при использовании старых сканеров, звуковых карт и других продуктов, даже работавших под управлением Windows XP, могут возникнуть проблемы. Дело в том, что обновленных 64-битных драйверов для таких устройств нет, так как производители прекратили их поддержку. Тем не менее есть способы оживить такой «антиквариат», чтобы не пришлось торопиться с покупкой более современных моделей.

Если нет возможности найти драйвер для Windows 7, зачастую может подойти вариант, созданный для предыдущей версии ОС - например, Windows Server 2003. Но при этом он обязательно должен быть написан именно для 64-битного варианта системы.

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

Другой способ выйти из затруднения - найти драйвер для устройства такого же типа, что и ваше.

Например, если ваш принтер совместим с языками PCL или PostScript, попробуйте воспользоваться драйвером от HP. Точную информацию о производителе комплектующих можно отыскать следующим образом. В меню «Пуск» кликните правой кнопкой по пункту «Компьютер» и в контекстном меню выберите «Свойства». В открывшемся окне слева найдите Диспетчер устройств и запустите его.

Подтвердите запрос прав администратора. В каталоге устройств отыщите те, которые отмечены желтым треугольником с восклицательным знаком (это означает, что драйверы для них не установлены). В контекстном меню «Свойства» на вкладке «Сведения» выберите из выпадающего списка «ID оборудования». Здесь вы увидите четырехзначное обозначение производителя (Vendor-ID) и номер устройства (Device-ID). По этой информации на ресурсе www.pcidatabase.com можно определить разработчика того или иного продукта. Как правило, на своих сайтах производители выкладывают подходящие драйверы.

Трудности могут возникнуть, если сетевой принтер подсоединен к компьютеру с 64-битной Windows 7. В этом случае 32-разрядный ПК, включенный в эту сеть, не сможет выбрать данное печатающее устройство. Выходом может стать установка на 64-битной операционной системе 32-разрядного драйвера принтера. Но это возможно не всегда и срабатывает лишь в том случае, если есть возможность распаковать инсталляционный пакет и установить драйвер через INF-файл. Владельцы серверов NAS или маршрутизаторов с USB-портом могут решить проблему быстрее, подключив принтер или сканер к этим устройствам.

Виртуальная Windows XP: как запустить любую программу в 64-битной среде

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

Мы продемонстрируем, каким образом активировать старые аппаратные средства без актуальных драйверов или пользоваться программами, изначально несовместимыми с «семеркой».

Использование XP в среде Windows 7 . Владельцы Windows 7 версий «Профессиональная», «Корпоративная» и «Максимальная» после инсталляции ОС имеют возможность просто активировать интегрированный в нее режим XP.

Если же у вас установлена «Начальная» или «Домашняя», на помощь придет дополнительное ПО. Бесплатная программа VMLite XP Mode, имеющаяся на нашем DVD, позволяет без проблем запускать в «семерке» приложения для Windows XP.

Вы даже не заметите, что в фоновом режиме у вас работает XP-машина.



Бесплатная утилита VMLite XP Mode позволяет легко интегрировать приложения для XP и устаревшее «железо» в среду Windows 7 Порядок установки
. Вам потребуется утилита VMLite XP Mode, а также лицензионная Windows XP. Программа, конечно, позволяет скачать полноценную версию этой ОС с сайта Microsoft, но владельцам «Начальной» и «Домашней» редакций лучше этого не делать, чтобы не нарушать лицензионное соглашение. Дело в том, что загружать прежнюю версию операционной системы имеют право только пользователи, купившие «Максимальную» или «Профессиональную».

После инсталляции вы получите полноценную Windows XP, в которой можно в обычном режиме устанавливать любые программы и драйверы. Утилита VMLite XP Mode запускается привычным способом - посредством кнопки «Пуск» и пункта «Все программы». Обмен файлами между двумя операционными системами производится через сетевой диск, при клике по которому отобразится структура папок вашего хост-компьютера.

У меня есть компьютер с Windows 10 (домашняя версия), в котором есть 4 ГБ RAM и i5-процессор. Мне нужно запустить старую 32-битную учетную программу. Поставщик сказал, что он не выпустит 64-битную версию (хотя существует 64-битная версия, ей не хватает ключевых функций из старой версии).

Программа устанавливается отлично, но когда я нажимаю значок программы, он говорит, что программа не будет работать на 64-битной системе.

Какие у меня варианты?

Я провел довольно немного исследований, но, похоже, он напуганы.

1) WoW64

По-видимому, это должно позволить вам запускать 32 бита на 64-битной Windows. Однако я не знаю, как его установить. Я думаю, что это только для веб-серверов. Однако этот поток стека переполнения говорит, что он может работать на Windows 7, но не объясняет, как его настроить (или если он будет работать в Windows 10).

2) Режим XP

32-битный эмулятор Windows XP. Однако, похоже, для Windows 7. Также в соответствии с этим потоком переполнения стека вам требуется Windows Professional.

3) Виртуальная машина

Давайте подражать Windows. Кажется, слишком много для моих целей. Кроме того, мне нужно будет купить 32-битную лицензию Windows. Я думаю, что это будет медленно работать с 4 ГБ Рама.

4) Диспетчер разделов на 32-битные и 64-разрядные версии. По-видимому, вы можете использовать бесплатный инструмент EaseUS, чтобы разделить диск на два, а затем установить отдельные 32-битные и 64-разрядные версии.

Опять же, кажется излишним, и похоже, мне нужно купить 32-битную лицензию Windows 10.

Это мои единственные варианты?

Изображений

Первый запуск (из сообщения об ошибке я предполагаю, что это 16-разрядная программа)

Нажав на программу

3 Solutions collect form web for “Запуск 32-разрядных приложений в Windows 10 64 бит”

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

Редактировать: после повторного рассмотрения этого вопроса спустя некоторое время я хотел бы обратиться к вашим выводам в OP.

  1. WoW64 позволяет запускать 32-разрядные программы в 64-битной среде Windows. Он встроен в операционную систему Windows и не требует дополнительной установки. Аналогично, 32-разрядные установки Windows могут запускать 16-разрядные программы.
  2. Режим XP был особенностью Windows 7 Professional, Enterprise и Ultimate, что позволило вам запустить более популярную в то время Windows XP на виртуальной машине.
  3. Virtual Box или любое программное обеспечение виртуальной машины (другой пример – VMWare) позволяет вам установить операционную систему внутри и запустить ее внутри вашей основной машины. Это было бы самым легким способом достижения вашей цели, поскольку вы могли бы просто установить программное обеспечение на 32-разрядную виртуальную ОС. Если вы предоставили VM 2GB доступ к памяти, то при 32-разрядной установке он будет работать нормально. Вялый, но все в порядке.
  4. Разделение вашего диска позволит вам установить двойную загрузку Windows. Это более постоянное решение, и не следует делать IMO, если вы не можете запустить виртуальную машину.

Это не 32-разрядный, это 16-разрядный

Это потребует, чтобы вы могли запускать 16-битное пространство WoW-памяти.

WoW16 – это Windows для Windows.

WoW запущен в Windows 3.0, часто называемый Windows для рабочих групп.

Поскольку это 16-битное пространство памяти больше не доступно, вы можете установить DOSBox в систему, установить Windows 3.1 в DOSBox и запустить приложение оттуда.

Другой вариант – установить 32-битную версию Windows 10 в качестве виртуальной машины и запустить ее оттуда.