如何从命令行设置可执行文件的兼容模式?

如何从命令行设置可执行文件的兼容模式?

有没有办法设置与 XP 选项兼容(右键单击/属性/兼容性...那个,是的:)从命令行执行?

或者更好的是,有没有办法将兼容性设置为整个目录(目录中的可执行文件),以便每个被编译/构建的可执行文件上都已经有了那个“标志”?

答案1

我不知道有什么工具可以设置或更改应用程序兼容性标志。

但是应用程序兼容性标志存储在注册表中(用户或系统部分):

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"

有关可用标志的更多详细信息,请参阅博客文章以管理员身份或兼容模式运行应用程序

答案2

在批处理文件中使用:

> set __COMPAT_LAYER=WinXP

在 .exe 调用之前

看:

答案3

罗伯特的回答非常准确。稍微扩展一下,并回答 OP 关于集体设置模式的问题...

如果您的文件夹中充满了需要处理的 .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如果您不想提示确认,请添加到末尾。

(如果您对此答案投赞成票,也请对罗伯特的答案投赞成票!)

相关内容