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


21

有没有一种方法可以通过命令行将与XP选项兼容性(右键单击/属性/兼容性...,是的,就是这样)设置为可执行文件?

还是更好的方法是,有没有一种方法可以设置与整个目录(目录中的可执行文件)的兼容性,以便每个进行编译/构建的可执行文件上都带有“标志”?


1
@CodyGray-因为我使用的是旧的编译器IDE(来自Win95);更改为新产品会导致一些我们目前尚未准备好的费用。如果我构建它并从IDE中启动它,那么整个过程都会崩溃。如果我将兼容性放到资源管理器中并启动它,它将起作用。这对我来说足够好了。只有我不喜欢在构建后每次都添加兼容性标志。因此,问题... :)
Rook

1
@CodyGray-好吧,我可以给您讲整个故事,但我怀疑它是否适合此处的评论框(或其中的三个框),所以我将问题待一会儿……
Rook

1
啊,我知道我记得在一篇文章中读过它。我终于找到了它,并发布了后代答案。:-)随意忽略我的ing,但我严重怀疑您会找到另一种方法。
科迪·格雷

Answers:


29

我不知道允许设置或更改应用程序兼容性标志的工具。

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

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"

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


1
嗯,这可能会起作用!第三行“ reg.exe ...” ...因此,如果我为某个目录中的每个exe设置了它,它将“保持连接”到该可执行文件,甚至是否重建?
Rook

2
右键单击>属性>兼容性的正常行为是在HKCU下设置键,除非按下“更改所有用户的设置”按钮。然后,它在HKLM下为所有用户设置,并且无法通过对话框进行更改。
Mike Brown


11

罗伯特的答案是随波逐流的。为了进一步扩展它,并回答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如果不想提示您进行确认,请添加到末尾。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.