У меня есть 32-битная программа, которую я пытаюсь запустить на 64-битном компьютере. Я запускаю команду vssadmin, чтобы получить информацию о точке восстановления и сохранить ее в текстовом файле.
Теперь он отлично работает на моем 32-битном компьютере, и я тестировал его на 64-битном компьютере моего друга, и он не работает.
Если я использую system () из 32-битного приложения, работающего в 64-битной системе, будет ли оно использовать 32-битную командную строку? Это единственное, что я могу подумать, что это перестанет работать, так как я вручную запускаю команду из командной строки, и она отлично работает.
Если это так? Есть ли способ заставить его использовать правильную командную строку?
Решение
Как в Linux, так и в Windows [и я верю в BSD / MacOS], 32-разрядные приложения могут запустить 64-разрядный процесс, используя соответствующий системный вызов «создать новый процесс» [который system() делает несколько слоев вниз внутри оболочки, чтобы она запустилась].
КАК НА 32x СИСТЕМЕ ПОИГРАТЬ В 64x ИГРЫ?
Единственное ограничение заключается в том, что 32-разрядный исполняемый файл не может использовать 64-разрядную общую библиотеку (.so или .dll) или наоборот. Но новый процесс начинается с загрузки нового исполняемого файла, и в этот момент процесс может быть 32- или 64-разрядным в зависимости от самого исполняемого файла.
Другие решения
Вы всегда должны избегать использования system (), потому что
- Это тяжелый ресурс
- Это наносит ущерб безопасности — вы не знаете, является ли это действительной командой или выполняет то же самое в каждой системе (см. Ответ Матса Петерссона), вы даже можете запускать программы, которые не собирались запускать.
Опасность заключается в том, что когда вы выполняете программу напрямую, она получает те же привилегии, что и ваша программа. Это означает, что если, например, вы работаете системным администратором, то вредоносная программа, которую вы только что непреднамеренно выполнили, также работает как системный администратор. Если это вас не пугает, проверьте свой пульс. - Антивирусные программы ненавидят это, ваша программа может быть помечена как вирус.
ты должен использовать CreateProcess () .
Вы можете использовать Createprocess (), чтобы просто запустить .exe и создать для него новый процесс.
Приложение будет работать независимо от вызывающего приложения.
Вот пример, который я использовал в одном из моих проектов:
VOID startup(LPCTSTR lpApplicationName) < // additional information STARTUPINFO si; PROCESS_INFORMATION pi; // set the size of the structures ZeroMemory( si.cb = sizeof(si); ZeroMemory( // start the program up CreateProcess( lpApplicationName, // the path argv[1], // Command line NULL, // Process handle not inheritable NULL, // Thread handle not inheritable FALSE, // Set handle inheritance to FALSE 0, // No creation flags NULL, // Use parent’s environment block NULL, // Use parent’s starting directory pi ) // Pointer to PROCESS_INFORMATION structure ) // Close process and thread handles. CloseHandle( pi.hProcess ); CloseHandle( pi.hThread ); >
ПРИМЕЧАНИЕ: как я уже говорил ранее, system () не делает одно и то же на разных машинах, Матс Петерссон объяснил почему
КАК 64 БИТНУЮ ИГРУ ЗАПУСТИТЬ НА 32 БИТНОЙ СИСТЕМЕ 2018
Источник: web-answers.ru
Запускать 32-битные приложения в Windows 10 64 бит
У меня есть компьютер с Windows 10 (домашняя версия), который имеет 4 ГБ оперативной памяти и процессор 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-битная программа)
Нажав на программу
Источник: qastack.ru
Как изменить 32-бит Windows 10 на 64-бит
Если вы обновляетесь с 32-битной Windows 7 или 8 (8.1) до Windows 10, то в процессе устанавливается 32-бит версия системы. Также, некоторые устройства имеют предустановленную 32-разрядную систему, однако процессор поддерживает 64-бит Windows 10 и имеется возможность поменять ОС на неё (и иногда это может быть полезно, особенно если вы увеличили объем оперативной памяти на вашем компьютере или ноутбуке).
Установка Windows 10 x64 вместо 32-битной системы
При обновлении ОС до Windows 10 (или покупке устройства с Windows 10 32-бит) вы получили лицензию, которая подходит и к 64-разрядной системе (в обоих случаях она зарегистрирована на сайте Майкрософт за вашим оборудованием и ключ вам знать не нужно).
К сожалению, без переустановки системы изменить 32-бит на 64-бит не получится: единственный путь поменять разрядность Windows 10 — выполнить чистую установку x64 версии системы в той же редакции на компьютер, ноутбук или планшет (при этом вы можете не удалять уже имеющиеся данные на устройстве, но драйверы и программы придется переустановить).
Примечание: если на диске есть несколько разделов (т.е. есть условный диск D), будет хорошим решением перенести свои пользовательские данные (в том числе с рабочего стола и системных папок документов) на него.
Порядок действий будет следующим:
- Зайдите в Параметры — Система — О программе (О системе) и обратите внимание на параметр «Тип системы». Если там указано, что у вас 32-bit operating system, x64-based processor, это означает, что ваш процессор поддерживает системы 64-бит (Если процессор x86 — то не поддерживает и дальнейшие шаги не следует выполнять). Также обратите внимание на выпуск (редакцию) вашей системы в разделе «Характеристики Windows».
- Важный шаг: если у вас ноутбук или планшет, убедитесь, что на официальном сайте производителя есть драйверы для 64-бит Windows для вашего устройства (если разрядность не указано, как правило поддерживается оба варианты системы). Желательно сразу скачать их.
- Скачайте оригинальный ISO образ Windows 10 x64 с сайта Майкрософт (на настоящий момент в одном образе содержатся сразу все редакции системы) и создайте загрузочную флешку (диск) или сделайте загрузочную флешку Windows 10 x64 официальным способом (с помощью Media Creation Tool).
- Запустите установку системы с флешки (см. Как установить Windows 10 с флешки). При этом, если вы получите запрос о том, какую редакцию системы установить — выберите ту, которая отображалась в сведениях о системе (на шаге 1). Ключ продукта при установке вводить не нужно.
- Если на «диске C» были важные данные, то для того, чтобы они не удалились, не форматируйте диск C при установке, просто выберите этот раздел в режиме «полная установка» и нажмите «Далее» (файлы предыдущей Windows 10 32-бит будут помещены в папку Windows.old, которую в дальнейшем можно будет удалить).
- Завершите процесс установки, после неё установите оригинальные драйверы системы.
На этом процесс перехода с 32-бит Windows 10 на 64-бит будет завершен. Т.е. основная задача — правильно пройти этапы с установкой системы с USB-накопителя и последующей установкой драйверов, чтобы получить ОС в нужной разрядности.
Источник: remontka.pro