Compatibility mode

Деякі програми в більш нових версіях Windows працюють некоректно або не працюють взагалі. Це відбувається тому, що більш нова версія функції API відрізняється від старої.

Для вирішення даної проблеми в Windows існує режим сумісності, який можна вибрати для кожної програми. Вибравши конкретну версію системи і певні параметри, можна запустити програму, якщо за замовчуванням вона не запускається.

Вивчення і реалізація системи управління версіями для ReactOS

Реалізація режиму сумісності

NtApphelpCacheControl

Функція ядра NtApphelpCacheControl використовувана AppHelp, щоб зберегти список (200) недавно запущених додатків в оперативній пам'яті для більш швидкого пошуку. При виході список додатків зберігається в реєстрі, а при завантаженні подгружается назад.

Реалізація apphelp sdb

Реалізація більшості SDB * API-інтерфейсів, пов'язаних з читанням і записом файлів SDB.

SDB файли - бази даних сумісності додатків, що містять інформацію про відомих "поганих додатках", а також список «шарів», які повинні застосовуватися до цих програм.

  • CORE-10367
  • зараз ведеться робота над даним компонентом

Compatibility mode

Вкладка у властивостях ярлика

Вкладка в 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

база сумісності

Додатки працюють через режим сумісності:

Схожі статті