2

Я хочу полностью отключить весь syswow64. Моя цель - сделать невозможным запуск любого 32-разрядного приложения или загрузку 32-разрядной DLL в 64-разрядной системе Windows. Аналогично старым 16-разрядным приложениям Windows, которые можно эмулировать в какой-то старой 32-разрядной системе, но больше нельзя использовать в 64-разрядной.

В Linux я могу просто отключить 32-битную эмуляцию либо в конфигурации компиляции ядра, либо с помощью некоторых настроек sysctl . Но что можно сделать на Windows?

Это как-то возможно?

Я знаю, что любая 32-битная программа - и, может быть, какая-то 64-битная - больше не будет работать, но для меня это не проблема. На самом деле, это моя цель.

Цель состоит в том, чтобы экспериментировать в 64-битной среде Windows. Инициировать дебаты о его юзабилити, или он нужен, или нет, - это очень оффтоп. Я хочу решение, а не дебаты.

2 ответа2

3

Метод bruteforce заключается в использовании библиотеки DLL AppInit , 32- битная версия которой падает при загрузке. Поскольку каждый 32-битный процесс загружает его, все они аварийно завершают работу перед запуском. Никакого прямого вреда 64-битным программам не будет, так как они все равно откажутся загружать 32-битную DLL, но, конечно, все эти 32-битные установщики откажутся запускаться и т.д.

2

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

В потребительской версии Windows невозможно отключить подсистему WoW64, которая не является "эмуляцией". Это возможно с Windows Server. Я собираюсь предположить, что это Windows Feature Windows на Windows Server которая может быть просто отключена. В связанной статье приведена команда, зависящая от версии для более старой версии Windows Server.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .