0

Apart from the handful of settable application compatibility settings available in compatibility tab, there's a whole swag of them, and Windows has an engine that detects and automatically applies quite a few, without user ever seeing this behind the scenes work. I know you can use the Application Compatibility Toolkit to set them manually but, before I tinker with those, is there any way to read/view what compatibility settings Windows is currently using for a specific program? This is exploratory work to improve performance/display of an old 32 bit program and not (just yet) anything I can put a finger on or anything specific that is broken completely. I know there are several layers of application compatibility in effect. I want to be able to view all/total compatibility settings in effect for specific program. I dont need code etc, if i need to code i can do that myself. just need to know where to look to get at ALL application compatibility settings in effect for program.

Running Win10 pro 64 bit.

1

I would highly recommend installing the Windows Assessment and Deployment Kit. This is the new version of the Application Compatibility Toolkit (and you don't have to use SQL!). This way you will be able to see what settings are applied to what applications.

It allows you to see the compatibility database and search for your exe if its included in the list of known programs with compatibility. It also allows you to apply a larger range of compatibility options compared to the windows 10 built in options.

You can also view applied settings in the registry:

HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

You can also see the settings applied to an application in the toolkit, however this can sometimes be less verbose than the registry.

To see what flags are applied to a running application, you can use a tool such as process hacker to view the __COMPAT_LAYER environment variable which shows currently applied settings.

4
  • Does the ACT really show all settings? In the registry I'm pretty sure it's only some things that are actually shown there and not all settings that actually apply when you run the program. The compatibility engine does some checking every time you run the prog, it picks up manifest and the override registry settings and applies windows version specific things. I really want to see all compat settings in effect and not a subset. ACT will do it? – chris Sep 7 '17 at 5:21
  • I've updated my answer. I tried the ACT, but it appears to still be omitting things. I had a look at the __COMPAT_LAYER enviroment variable set in the processes context, it seems to provide a list of layers that are applied to the application. – mt025 Sep 7 '17 at 6:07
  • thanks a lot. i think the __COMPAT_LAYER in process hacker will be the go. – chris Sep 7 '17 at 6:22
  • If anyone ever needs a process not to have several compat settings added to registry and re-created whenever you get rid of them....delete the entries and disable application compatibility service. There is at least one additional way of setting compatibility flags,via a manifest file. Like everything MS, a simple thing a complex mess. – chris Oct 8 '18 at 1:50

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.