Предположим, мое приложение для запуска в режиме совместимости находится на

C:\ Кошки \ app.exe

Если я вручную установил app.exe в режиме совместимости (например, WinVistaSP2) со свойствами и т.д .. Windows запускает его в режиме совместимости WinVistaSP2, только app.exe находится в каталоге c:\cats

Но если я перенесу app.exe в другую папку, например, y:\dogs\app.exe, в этой папке не будет совместимости.

Поэтому я задаюсь вопросом: есть ли приложение или инструмент или способ, который всегда и в любых папках хранит мой предустановленный app.exe в режиме совместимости?

1 ответ1

2

Простой ответ: вы не можете.

Режим совместимости не сохраняется с файлом, а хранится в реестре под ключом
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers .

В приложении должна быть запись типа REG_SZ с именем y:\dogs\app.exe , имеющая в качестве значения все флаги совместимости, разделенные пробелом. Для совместимости с Vista у вас будет ~ VISTARTM (обратите внимание на пробел после ~).

Кроме того, эти записи реестра никогда не удаляются, поэтому файл может быть удален или заменен, но файл с тем же именем и в той же папке всегда будет иметь эти режимы совместимости. Не очень сложный механизм, но это жизнь.

В настоящее время я не знаю ни одной программы, которая перемещает запись реестра при перемещении программы, даже файловые утилиты Microsoft. Вам нужно будет обновить реестр вручную или написать скрипт, который выполняет перемещение файла, а также обновляет реестр. Windows не делает этого.

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