Compatibility mode
Деякі програми в більш нових версіях Windows працюють некоректно або не працюють взагалі. Це відбувається тому, що більш нова версія функції API відрізняється від старої.
Для вирішення даної проблеми в Windows існує режим сумісності, який можна вибрати для кожної програми. Вибравши конкретну версію системи і певні параметри, можна запустити програму, якщо за замовчуванням вона не запускається.
Вивчення і реалізація системи управління версіями для ReactOS
Реалізація режиму сумісності
NtApphelpCacheControl
Функція ядра NtApphelpCacheControl використовувана AppHelp, щоб зберегти список (200) недавно запущених додатків в оперативній пам'яті для більш швидкого пошуку. При виході список додатків зберігається в реєстрі, а при завантаженні подгружается назад.
Реалізація apphelp sdb
Реалізація більшості SDB * API-інтерфейсів, пов'язаних з читанням і записом файлів SDB.
SDB файли - бази даних сумісності додатків, що містять інформацію про відомих "поганих додатках", а також список «шарів», які повинні застосовуватися до цих програм.
- CORE-10367
- зараз ведеться робота над даним компонентом
Вкладка у властивостях ярлика
Вкладка в explorer
У більш нових версіях Windows реалізована у вигляді розширення оболонки (acppage.dll). Використовує функції SetPermLayerState, SdbGetPermLayerKeys.
На даний момент вкладка реалізована разом з функціональністю дозволяє застосувати необхідні «шари», але відключена.
інтеграція apphelp
Інтеграція apphelp в створення процесу. COM, MSI та завантаження драйверів.
інфраструктура Shim
Реалізує базову інфраструктуру для емуляції різних API.
Створення стандартних значень Shim
- список "емульованого" версій API. (CORE-11299)
- настройку дозволу екрану / глибини кольору / відключення тим (CORE-11927)
Виконує допоміжні функції для реєстрації регулювальних шарів і для обробки загальних завдань.
Дані Shim в ярликах
Застосування оточення сумісності не для * .exe-файлу, а для ярлика.
статус реалізації
Управління через реєстр
- DWORD: DisableEngine
- DWORD: DisablePropPage
- DWORD: DisableWizard
- DWORD: LogAppHelpEvents
- DWORD: VDMDisallowed
база сумісності
Додатки працюють через режим сумісності: