Roo*_*ook 23 windows windows-7 compatibility windows-xp
有没有办法从命令行将与 XP 选项的兼容性(右键单击/属性/兼容性......那个,是的:) 设置为可执行文件?
或者更好的是,有没有办法为整个目录(目录中的可执行文件)设置兼容性,以便每个被编译/构建的可执行文件都已经有了那个“标志”?
Rob*_*ert 32
我不知道允许设置或更改应用程序兼容性标志的工具。
但是,应用程序兼容标志存储在注册表(用户或系统部分)中:
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
Run Code Online (Sandbox Code Playgroud)
因此,您可以使用标准命令行注册表编辑器来创建所需的条目:
reg.exe Add "HKLM\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "C:\Program Files\MyApp\Test.exe" /d "WINXPSP3"
Run Code Online (Sandbox Code Playgroud)
有关可用标志的更多详细信息,请参阅博客文章以管理员身份或在兼容模式下运行应用程序。
小智 18
在批处理文件中使用:
> set __COMPAT_LAYER=WinXP
Run Code Online (Sandbox Code Playgroud)
在 .exe 调用之前
看:
Mik*_*own 11
罗伯特的回答是准确的。稍微扩展一下,并回答OP关于设置模式的问题......
如果您有一个装满 .exe 文件的文件夹要处理,您可以这样做:
for %x in ("*.exe") do reg.exe Add "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "%~fx" /d "WINXPSP3"
Run Code Online (Sandbox Code Playgroud)
此示例使用 HKCU 而非 HKLM;一定要选择你真正想要的。
要删除设置,每个设置都有确认提示:
for %x in ("*.exe") do reg.exe Delete "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "%~fx"
Run Code Online (Sandbox Code Playgroud)
/f
如果您不想收到确认提示,请添加到最后。
(如果您对这个答案投了赞成票,请也投给罗伯特!)
归档时间: |
|
查看次数: |
95425 次 |
最近记录: |