Применяется ли режим совместимости для .exe независимо от того, как он выполняется? (Как это проверить?)

338
TNT

При установке режима совместимости для исполняемого файла (как описано в ansers для этого вопроса ) это применяется в любом контексте - будь то запуск из Проводника, по ярлыку, или из сценария cmd или Powershell, или вызывается непосредственно в одном из последний?

Или как я могу проверить, действует ли установленный режим совместимости в различных контекстах, упомянутых выше (без компиляции некоторого самописного кода на языке c / c ++)?

0
Как часть процесса, создаваемого в Windows, ряд общих шагов инициализации выполняется независимо от того, как процесс создан. Одним из них является проверка прокладок и параметров совместимости из \ Microsoft \ Windows NT \ CurrentVersion \ AppCompatFlags \ Layers. Другие включают чтение путей выполнения файла изображения, AppInit_dll, куда загружен файл User32.dll, и т. Д. Если вы используете Process Monitor, вы увидите, что все эти ключи читаются при запуске процесса. HelpingHand 6 лет назад 3
@HelpingHand: Почему бы не написать это как ответ? harrymc 6 лет назад 0
Я предполагаю, что наблюдение за чтением реестра при запуске процесса - это одно, а проверка того, что процесс после запуска имеет установленные параметры сопоставимости, - это другое. Я уверен, что вы можете получить эту информацию из блока среды процесса (PEB) процесса, если знаете, что означают значения. AppCompatFlags, AppCompatFlagsUser? Я не чувствую, что это полный ответ. HelpingHand 6 лет назад 0

0 ответов на вопрос