20

Есть ли способ установить параметр совместимости с XP (щелчок правой кнопкой мыши / свойства / совместимость ... что да, :) для исполняемого файла из командной строки?

Или, что еще лучше, есть ли способ установить совместимость с целым каталогом (исполняемыми файлами в каталоге), чтобы каждый исполняемый файл, который компилируется / собирается, уже имеет этот "флаг"?

3 ответа3

25

Я не знаю инструментов, позволяющих устанавливать или изменять флаги совместимости приложений.

Однако флаги совместимости приложения хранятся в реестре (пользовательская или системная часть):

HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

Поэтому вы можете использовать стандартный редактор реестра командной строки для создания необходимой записи:

reg.exe Add "HKLM\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "C:\Program Files\MyApp\Test.exe" /d "WINXPSP3"

Для получения дополнительной информации о доступных флагах см. Сообщение в блоге « Запуск приложения от имени администратора» или «Режим совместимости».

16

В командном файле используйте:

> set __COMPAT_LAYER=WinXP

перед вызовом .exe

Увидеть:

10

Ответ Роберта был точным. Чтобы немного расширить его, и ответить на вопрос ОП о настройке режима в массовом порядке ...

Если у вас есть папка с файлами .exe для обработки, вы можете сделать это:

for %x in ("*.exe") do reg.exe Add "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "%~fx" /d "WINXPSP3"

Этот пример использует HKCU вместо HKLM; не забудьте выбрать тот, который вы действительно хотите.

Чтобы удалить настройки, с запросом подтверждения для каждого:

for %x in ("*.exe") do reg.exe Delete "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "%~fx"

Добавьте /f в конец, если вы не хотите получать запрос на подтверждение.

(Если вы проголосуете за этот ответ, пожалуйста, проголосуйте и за Роберта!)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .