Compatibility mode
Режим совместимости
Некоторые программы в более новых версиях Windows работают некорректно или не работают вообще. Это происходит потому, что более новая версия функции API отличается от старой.
Для решения данной проблемы в Windows существует режим совместимости, который можно выбрать для каждой программы. Выбрав конкретную версию системы и определенные параметры, можно запустить программу, если по умолчанию она не запускается.
Такая же функция присутствует и в Wine. С помощью Winecfg можно выбрать, какую версию Windows API будет имитировать Wine для всей "системы" или для конкретной программы. Так же Wine может эмулировать виртуальный рабочий стол (например, для полноэкранного приложения) и выбрать какую библиотеку ему использовать: собственную, или стороннюю. Например, mfc42.dll: из Wine, или из установленного пользователем Microsoft Visual C++ 2008 Redistributable Package.
В ReactOS, которая на данный момент стремится к Windows NT 5.2 (Windows Server 2003), пока данная функция отсутствует и система, ни смотря на то, что в ней для реализации Windows API используется код Wine, данная функция отсутствует. Это потому, что реализация режима совместимости Wine отличается от NT-систем (например, некорректными цепочками вызовов в kernel32/ntdll [1]). Для всех программ она идентифицируется как Windows Server 2003 SP1 и несовместимые с этой системой приложения даже не запустятся.
Отчеты
В ReactOS планируется реализация данной функции. В багтрекере уже есть несколько отчетов на эту тему:
- CORE-10366 - Реализация режима совместимости
- CORE-10375 - Вкладка "Режима совместимости" для *.exe файлов в проводнике
- CORE-10593 - Апплет "Режим совместимости" для Панели управления