После нескольких поисков в Google тщетно, я решил поэкспериментировать сам.Я обнаружил, что параметры совместимости для каждого исполняемого файла хранятся - как я и думал - в реестре Windows.
Ключ, в котором хранятся параметры:
HKEY_CURRENT_USER \ Software \ Microsoft \ Windows NT \CurrentVersion \ AppCompatFlags \ Layers
Для каждого приложения, для которого указаны параметры совместимости, существует значение под этим ключом, имя которого представляет собой путь к исполняемому файлу, а данные - это строка, состоящая из параметров совместимости.
Ключевыми словами в строке, которые задают параметры совместимости, являются: WIN95 WIN98 NT4SP5
WIN2000 256COLOR 640X480
ОТКЛЮЧИТЬСЯ ОТМЕНЫ DISABLECICERO
Если указано несколько параметров (или они должны быть указаны), тоДанные состоят из настроек выше, разделенных пробелом каждый.Первые четыре параметра являются взаимоисключающими, то есть указывается только один из них (если вообще указан).Я не проверял последствия указания нескольких операционных систем.
Итак, вернемся к решению вашей проблемы.Чтобы проверить, настроен ли исполняемый файл (скажем, «C: \ path \ executetable.exe») для работы в 256-цветном режиме, необходимо указать значение с именем «C: \ path \ executetable.exe» (без кавычек,даже если путь содержит пробелы) под ключом [HKEY_CURRENT_USER \ Software \ Microsoft \ Windows NT \ CurrentVersion \ AppCompatFlags \ Layers], а данные, связанные со значением, будут содержать строку «256COLOR».Если он также настроен на работу в режиме совместимости под Windows 98 / ME, данные будут «WIN98 256COLOR».
Итак, подход прост.Проверьте, есть ли значение с полным путем к исполняемому файлу под ключом, который я упомянул выше.Если нет, в исполняемом файле не было указано никаких параметров совместимости.Если значение существует, извлеките его данные и проверьте наличие «256COLOR» в данных.Соответственно, наличие «WIN95», «WIN98», «NT4SP5» или «WIN2000» будет означать, что исполняемый файл настроен для работы в режиме совместимости для этой конкретной операционной системы.