有没有办法设置与 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
如果您不想提示确认,请添加到末尾。
(如果您对此答案投赞成票,也请对罗伯特的答案投赞成票!)