This article ideated by MiniTool official web page answers the question “do 32-bit programs work on 64-bit Windows system” and tells you how to run 32-bit programs on a 64-bit Windows operating system (OS).
About 32 Bit Programs and 64 Bit Widows
Usually, a 32-bit program is designed for 32-bit Windows and also for 64-bit systems. Yet, a 64-bit program is only developed to run on 64-bit Windows. A 32-bit can run on a 64-bit Windows without accessing all the features and memory that a 64-bit can offer.
Can I Run 32-Bit Programs on a 64-Bit Computer?
In general, you can surely run 32-bit software on a 64 bit PC. All 64 bit systems are compatible with 32-bit programs relying on WOW64, which is the x86 emulator that enables 32-bit Windows-based programs to run seamlessly on 64-bit Windows. It also allows for 32-bit (x86) Windows apps to run seamlessly in 64-bit (x64) Windows and for 32-bit (x86) and 32-bit (ARM) Windows apps to run seamlessly in 64-bit (ARM) Windows.
WOW64 is embedded in the operating system and there is no need to enable it explicitly. It isolates 32-bit software from 64-bit programs, which includes preventing file and registry collisions. Console, GUI, as well as service apps are supported. The 32-bit File system is stored as Program Files(x86). In this way, Windows can identify a 32-bit app and provide the accurate .dll file depending upon it.
Windows offers interoperability across the 32/64 boundary for scenarios like cut and paste and COM. Yet, 32-bit processes can’t load 64-bit DLLs for execution and 64-bit processes cannot load 32-bit DLLs for execution. However, this restriction doesn’t apply to DLLs loaded as data files or image resource files.
A 32-bit program can detect whether it is running under WOW64 by calling the IsWow64Process function (use IsWow64Process2 if targeting Win10). The app can obtain additional info about the processor relying on the GetNativeSystemInfo utility.
With WOW64, you can run 16-bit programs on 32-bit Windows of the same principle. Yet, 64-bit doesn’t support running 16-bit Windows-based programs because handles have 32 significant bits on 64-bit Windows. So, handles can’t be truncated and passed to 16-bit apps without loss of data. The launch of a 16-bit program on a 64-bit system will fail with this error: ERROR_BAD_EXE_FORMAT.
How to Run 32 Bit Programs on 64 Bit Windows 11/10?
There are several ways to achieve the aim of running 32 bit programs on 64 bit Windows.
#1 Directly Install 32-Bit App on 64-Bit System with WOW64
Generally, the process to run 32-bit applications on a 64-bit computer is similar to running them on a 32-bit machine.
Firstly, install the target 32-bit tool on your 64-bit computer. You may rely on software installation CD/DVD. However, if you download it online, it may automatically detect your system condition and recommend the corresponding 64-bit program for you. If you encounter this situation, just insist on choosing the 32-bit version. The process of installing a 32-bit program on a 64-bit PC is the same as installing it on a 32-bit computer.
Secondly, double-click on the shortcut of the installed 32-bit software to open it. Or, you can right-click on it and select Open. If you can’t find a shortcut on your desktop, just look for the program in the All Programs list after clicking on the Start Menu.
#2 Run 32-Bit Programs on 64-Bit PC by Virtual Box
You can also run a 32-bit application within a virtual box or virtual machine (VMWare) that is installed on your 64-bit machine. This will indirectly achieve your purpose.
#3 Let 32-Bit Software Work on 64-Bit Computer in XP Mode
XP Mode is a feature of Windows 7 Professional, Enterprise, and Ultimate that permits you to run the more popular at the time Windows XP on a Virtual machine.
#4 Dual-Run 32-Bit Apps on 64-Bit Windows
Finally, you are able to run the 32-bit tools on the 64-bit OS if you dual boot your computer with both 64-bit and 32-bit systems and install 32-bit programs on the 32-bit system.
Can’t Install 32-bit Program on 64-bit Windows?
If you fail to install your 32-bit software on your 64-bit system, try the following solution.
1. Open Windows Control Panel.
2. Select Programs and Features.
3. Click Turn Windows features on or off in the left panel.
4. In the new popup, find and check Internet Information Services.
5. Finally, click OK to save the change and wait for Windows to complete the request changes.
6. Search and open the Internet Information Services.
7. In the pop-up window, unfold the DESKTOP option in the left menu.
8. Then, click on the Application Pools sub-option.
9. Right-click on the Default Application Tool option and choose Advanced Settings in the right area.
10. In the Advanced Settings window, under the General section, click on the dropdown behind Enable 32-Bit Applications option and select True.
11. Click OK to save the setting.
Now, try to install the 32-bit tool on your 64-bit Windows 10 or Windows 11 again.
How to run 64-bit programs on 32-bit Window?
Usually, you can’t directly run a 64-bit program on a 32-bit system for a 32-bit system can’t provide the necessary resources and RAM a 64-bit app requires. Yet, you can use virtual machines to run a 64-bit app on a 32-bit system.
Do 32 Bit Programs Run Faster on 64 Bit Windows?
It’s hard to answer. Sometimes, 32-bit apps run faster. Sometimes, they run slower. There are many competing factors affecting the performance. So, we can’t ensure that a 32-bit program always runs faster on a 64-bit system than on a 32-bit system.
How to run 16-bit programs on 64-bit Windows?
Generally, you can’t run 16-bit apps on a 64-bit system even with WOW64. Yet, some geeks have shown it is possible to rely on third-party 16-bit emulators. See an example here >>
How to check a program is 16-bit or not?
Just right-click on the target program and select Properties. In the Properties window, check to see whether there is a Version or Previous Versions tab or not. If there is, then, the program isn’t a 16-bit one but 32-bit or 64-bit. Otherwise, it is.
How to run a program in compatibility mode?
Right-click on the app and choose Properties. In the Properties window, select the Compatibility tab. Then, under the Compatibility mode, check Run this program in compatibility mode for and select the target Windows system.
Windows 11 Assistant Software Recommended
The new and powerful Windows 11 will bring you many benefits. At the same time, it will also bring you some unexpected damages such as data loss. Thus, it is strongly recommended that you back up your crucial files before or after upgrading to Win11 with a robust and reliable program like MiniTool ShadowMaker, which will assist you to protect your increasing data automatically on schedules!
MiniTool ShadowMaker TrialClick to Download100%Clean & Safe
Also read:
- What Is the Smallest Video Format and How to Convert to It?
- Video Game Sound Effects: Definition/History/Download/Creation
- Best Musicals on Broadway/Netflix/Disney or for Teens/Kids/Family
- [Guides] How to Crop a Photo in Photoshop and Photoshop Element?
- [2 Ways] How to Crop a Photo on Mac by Photos & Preview Apps?
Современные компьютеры в большинстве случаев поставляются с установленной операционной системой Windows 10 64 bit. Даже бюджетные модели уже имеют 3 и более Гбайт оперативной памяти, что позволяет задействовать системе всю мощь 64-битной разрядности обработки данных.
Подробнее о преимуществах 64 bit над 32 bit Windows вы можете прочитать в нашей статье «Преимущества перехода на 64 бита».
Но, как бы не была привлекательна 64-разрядная система, зачастую пользователь просто не имеет в своем распоряжении 64-битной программы, с которой он давно работает и которая его полностью устраивает, т.к. производитель ее просто не выпустил. Как правило, такие программы устанавливаются в Windows в отдельную папку \Program Files (x86) и их запуск осуществляется в 32-разрядном режиме.
Если в процессе запуска программа выдает ошибку или вообще не запускается, а в Windows 32 bit она работала без проблем, есть шанс запустить ее в специальном режиме, который разработчики назвали «Режим совместимости».
Для этого в Windows 7 щелкните правой кнопкой мыши на ярлыке нужной программы, а затем выберите в контекстном меню «Свойства». В открывшемся окне перейдите на вкладку «Совместимость» и установите флажок «Запустить программу в режиме совместимости с …» и в выпадающем списке укажите вариант системы для запуска.
Нажмите кнопку «OK». После этого попробуйте запустить вашу программу.
Кроме того, в контекстном меню Проводника также имеет смысл попытаться автоматически решить задачу, кликнув по строке «Исправление неполадок совместимости» — в Windows 7.
В Windows 10 при настройке запуска в совместимом режиме на вкладке «Совместимость» имеется отдельная кнопка «Запустить средство устранения проблем с совместимостью». После чего вам предложат либо использовать рекомендованные параметры, либо провести диагностику программы.
Если и после этого программа не запустилась, то стоит подойти к проблеме более основательно и попробовать варианты, указанные на официальном сайте Microsoft.
Более радикальным методом запуска программы является ее установка и использование в виртуальной машине с установленной Windows 7 32 bit. Подробнее, как установить и настроить виртуальную машину вы можете почитать в нашей статье «Как создать и настроить на ПК виртуальную ОС?».
Читайте также:
- Как переключиться с Windows 32 на 64 бита: все плюсы и минусы перехода
- Как запускать системные утилиты в Windows 7 без раздражающих запросов UAC, не отключая его
Фото: компании-производители, pexels.com
- Накладные расходы
- Преимущество 64-битной среды для 32-битных программ
- Перенаправления
- Почему невозможно использовать в 64-битной программе 32-битные DLL? Можно ли это обойти?
- Постепенный отказ от поддержки 32-битных программ
- Дополнительная информация
Прежде чем приступить к тематике разработки кода 64-битных программ, остановимся на вопросе обратной совместимости 64-битных версий Windows с 32-битными приложениями. Обратная совместимость осуществляется за счет механизмов, реализованных в WoW64.
WoW64 (Windows-on-Windows 64-bit) — подсистема операционной системы Windows, позволяющая запускать 32-битные приложения на всех 64-битных версиях Windows.
Подсистема WoW64 не поддерживает следующие программы:
- программы, скомпилированные для 16-разрядных операционных систем;
- программы режима ядра, скомпилированные для 32-разрядных операционных систем.
Накладные расходы
Существуют различия WoW64 в зависимости от архитектуры процессора. Например, 64-битная версия Windows разработанная для процессора Intel Itanium 2 использует WoW64 для эмуляции x86 инструкций. Такая эмуляция весьма ресурсоемка по сравнению с WoW64 для архитектуры Intel 64, так как происходит переключение с 64-битного режима в режим совместимости при выполнении 32-битных программ.
WoW64 на архитектуре Intel 64 (AMD64 / x64) не требует эмуляции инструкций. Здесь подсистема WoW64 эмулирует только 32-битное окружение за счет дополнительной прослойки между 32-битным приложением и 64-битным Windows API. Где-то эта прослойка тонкая, где-то не очень. Для средней программы потери в производительности из-за наличия такой прослойки составят около 2%. Для некоторых программ это значение может быть больше. Два процента — это немного, но следует учитывать, что 32-битные приложения работают немного медленнее под управлением 64-битной операционной системы Windows, чем в 32-битной среде.
Компиляция 64-битного кода не только исключает необходимость в WoW64, но и дает дополнительный прирост производительности. Это связано с архитектурными изменениями в микропроцессоре, такими, как увеличение количества регистров общего назначения. Для средней программы можно ожидать в пределах 5-15% прироста производительности от простой перекомпиляции.
Преимущество 64-битной среды для 32-битных программ
Из-за наличия прослойки WoW64 32-битные программы работают менее эффективно в 64-битной среде, чем в 32-битной. Но все-таки простые 32-битные приложения могут получить одно преимущество от их запуска в 64-битной среде. Вы, наверное, знаете, что программа, собранная с ключом /LARGEADDRESSAWARE:YES, может выделять до 3-х гигабайт памяти, если 32-битная операционная система Windows запущена с ключом /3gb. Так вот, эта же 32-битная программа, запущенная на 64-битной системе, может выделить почти 4 GB памяти (на практике около 3.5 GB).
Перенаправления
Подсистема WoW64 изолирует 32-разрядные программы от 64-разрядных путем перенаправления обращений к файлам и реестру. Это предотвращает случайный доступ 32-битных программ к данным 64-битных приложений. Например, 32-битное приложение, которое запускает файл DLL из каталога %systemroot%\System32, может случайно обратиться к 64-разрядному файлу DLL, который несовместим с 32-битной программой. Во избежание этого подсистема WoW64 перенаправляет доступ из папки %systemroot%\System32 в папку %systemroot%\SysWOW64. Это перенаправление позволяет предотвратить ошибки совместимости, поскольку при этом требуется файл DLL, созданный специально для работы с 32-разрядными приложениями.
Подробнее с механизмами перенаправления файловой системы и реестра можно познакомиться в разделе MSDN «Running 32-bit Applications».
Почему невозможно использовать в 64-битной программе 32-битные DLL? Можно ли это обойти?
Загрузить 32-битную DLL из 64-битного процесса и выполнить код из неё невозможно. Невозможно в силу дизайна 64-битных систем. В принципе, невозможно. Не помогут ни хитрости, ни недокументированные пути. Для этого нужно загрузить и проинициализировать WoW64, не говоря уже о структурах в ядре. Фактически нужно будет на лету превратить 64-битный процесс в 32-х битный. Подробнее эта тема рассмотрена в посте «Недокументированные функции; Загрузка 32-х битных DLL в 64-х битный процесс». Единственное, что можно порекомендовать, — это создание суррогатного процесса и взаимодействия с ним посредством технологии COM. Об этом рассказывается в статье «Accessing 32-bit DLLs from 64-bit code».
А вот загрузить ресурсы из 32-битной DLL в 64-битный процесс совсем несложно. Это можно сделать, если при вызове LoadLibraryEx указать флаг LOAD_LIBRARY_AS_DATAFILE.
Постепенный отказ от поддержки 32-битных программ
Вполне естественно, если компания Microsoft будет стимулировать переход на 64-битные системы, постепенно отказываясь от поддержки 32-битных программ в ряде версий операционной системы Windows. Конечно, это будет очень медленный процесс. Но все-таки первые шаги в этом направлении уже сделаны.
Многие администраторы знают про относительно новый режим установки и работы серверной версии операционной системы под названием Server Core. Это тот режим, о котором участники войн «Windows vs Linux» говорили очень давно. Одним из аргументов сторонников использования Linux на сервере была возможность установить серверную ОС без графического интерфейса (GUI). Но вот и в Windows Server появилась такая возможность. Установка в этом режиме позволяет получить только командную строку без пользовательского интерфейса.
Эта возможность (установка Server Core) появилась в Windows Server 2008. Но в Windows Server 2008 R2 появилось нововведение, приближающее 64-битное будущее. При установке Windows Server 2008 R2 (Server Core) поддержка запуска 32-битных приложений стала опциональной. Причем по умолчанию эта поддержка выключена. И при попытке запуска 32-битного приложения в режиме Server Core пользователь получит сообщение о невозможности запуска. Конечно, можно добавить поддержку 32-битных программ:
start /w ocsetup ServerCore-WOW64
В обычном (Full Installation) режиме 32-битные приложения по умолчанию запускаются, а вот в Server Core уже нет.
Тенденция очевидна. Со временем все более рациональным будет создание 64-битных версий приложений, так как они смогут функционировать на большем числе версий операционных систем.
Дополнительная информация
Интересным источником информации по системе WoW64 является блог Алексея Пахунова: http://blog.not-a-kernel-guy.com/. Алексей является сотрудником компании Microsoft и принимает непосредственное участие в разработке подсистемы WoW64.
Авторы курса: Андрей Карпов (karpov@viva64.com), Евгений Рыжков (evg@viva64.com).
Правообладателем курса «Уроки разработки 64-битных приложений на языке Си/Си++» является ООО «Системы программной верификации». Компания занимается разработкой программного обеспечения в области анализа исходного кода программ. Сайт компании: http://www.viva64.com.
The first Windows systems used a 16-bit MS-DOS based kernel to run a graphical shell in order to access the system’s services. If that last sentence sent you scrambling for a tech glossary, put your mind at ease. The information in this article will be accessible to experts and laypeople alike. You may have experienced some issues when running a 32-bit application in a 64-bit version of Windows. If so, read on to learn about why this is happening and how to fix it.
Some Necessary Concepts
The simple fact is that you shouldn’t be having this problem in the first place. Windows has an emulator which—if working correctly—provides the necessary environment for both 64 and 32-bit applications to run normally. This emulator (WOW64) segregates 32-bit applications from 64-bit ones to prevent file and/or registry collisions. On a technical note, 32-bit processes cannot execute 64-bit DLLs, so this may be causing your issue.
Something to keep in mind is that you might actually be running a 16-bit application, which definitely will not work. A quick way to check if a program is 16-bit is to navigate to its location on your computer. Right-click on it and select Properties from the drop-down menu. If the properties tab has a “Version” or “Previous Versions” tab, it isn’t a 16-bit application.
Making It Compatible
The first thing you should try when you set out to run any software that has compatibility issues is to run it in Compatibility Mode. There are very few problems that this realistically fixes nowadays, but it was a very useful feature when Windows 95 was replaced by NT.
To run an application in Compatibility Mode, navigate to it in the file explorer and right-click it. Same as above, click on Properties from the menu. Under Properties, click on the Compatibility tab. Click the box that says “Run this program in compatibility mode for:” and select the Windows version you want to use. Then, click Apply and try to run your application. There should only be a handful of options so try to go through them all.
Enable 32-Bit Applications
To be thorough, you can make sure that 32-bit applications are enabled in your Windows services. To do so, follow these steps:
- Start by accessing Windows Features by typing “windows features” into the Windows search box and selecting the bests match.
- Check the box that reads Internet Information Services and click OK. It will take a minute to install this feature
- Launch the IIS Manager by typing “internet information services” in the Windows search box and selecting the best match.
- You will see your computer’s name in the left window, expand it and click on Application Pools.
- In the right window, right-click on DefaultAppPools and selects Advanced Settings.
- Select “Enable 32-bit Applications” and change it from False to True.
- Click OK and restart your computer.
Once you complete this, try running the application again. If your WOW64 is working correctly, this shouldn’t be necessary but it has proven to be effective in some cases.
Incorrect Program Files
Older programs sometimes get the installation mixed up and their files can end up in the wrong folder. This is particularly difficult to detect because the installation will seem to have gone off without a hitch.
On 64-bit versions of Windows, all 64-bit applications are installed in the “Program Files (x86)” folder. This includes any files related to the installed application. However, 32-bit programs end up in a separate folder titled “Program Files.” If the paths are incorrectly coded in the installation, the application may have installed in the wrong folder.
Fixing this should include editing some of the installation code but you don’t have to do that, and you may not be able to get to the source code anyway. For a makeshift solution, simply find the installed files and copy them manually into the “Program Files” folder.
Shave and a Haircut, Two Bits
These are just some of the problems you could be facing when running a 32-bit application. But again, it cannot be emphasized enough that this should never happen, as measures are in place to prevent it. It’s far more likely that you’re dealing with some other compatibility issue. If you’re very confident that the register is causing problems, start with the solutions outlined in the article.
Have any of the methods in the article been helpful? What made you sure that the 32-bit register is really what is causing your problem? Share your reasoning in the comments below.