Windows 7 中 DISABLETHEMES 应用程序兼容性不起作用

Windows 7 中 DISABLETHEMES 应用程序兼容性不起作用

我正在将为 xp 开发的旧版 winform 应用程序移植到 windows 7 上,该应用程序目前使用 c#.net 3.5 和一些第三方控件开发,这些控件非常旧,但只要它们运行正常,就不想更改它们。问题是控件在 winform 上无法正确显示,因此我们发现解决方案是 DISABLETHEMES,如中所述

http://www.sevenforums.com/tutorials/316-compatibility-mode.html

解决方案在您右键单击 .exe 文件并设置 DISABLETHEMES 时有效。但当您手动进行注册表输入时,它不起作用

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
key applicationpath
value  DISABLETHEMES 

有人告诉我我错过了什么

答案1

我不知道它是否有帮助,我运行了一个跟踪,这是我对名为 MyIE(myie.exe)的程序的 GUI 进行更改后得到的结果。

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
"C:\\Net\\MyIE2\\MyIE.exe"="WINXPSP3 256COLOR 640X480 DISABLETHEMES DISABLEDWM HIGHDPIAWARE RUNASADMIN"

^ 这是程序的完整路径(路径可能很重要?)导入路径时不要忘记双反斜杠。该项目是字符串 Reg_SZ ?

&

在我之下作为用户(必须为用户提供正确的 ID,这个是混乱的)

[HKEY_USERS\S-1-5-21-1019789469-3873768421-1457166851-500\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]

"C:\\Net\\MyIE2\\MyIE.exe"="WINXPSP3 256COLOR 640X480 DISABLETHEMES DISABLEDWM HIGHDPIAWARE RUNASADMIN"

还有一个文件:一些报告进入系统磁盘的 windows/WER/ReportQueue/noncritical,我认为它只是一种“日志”类型的东西。

我没有看到任何其他重要的设置。HKEY_LOCAL_MACHINE <-- 此位置没有任何相关更改,我点击了 [更改所有用户的设置] 按钮。

我设置了所有标志,目的是看到所有标志或用作模板。

我有许多较旧的程序,其中一些永远无法在 Windows7 下以任何形式的兼容性正确运行,它们使用略有不同的编程方法,并且可能使用当时有效的一些糟糕技巧,它们经常失败。

答案2

为了解决问题,我必须在 HKEY_CURRENT_USER 和 HKEY_LOCAL_MACHINE 中创建注册表项

[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
key applicationpath
value  DISABLETHEMES 

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
key applicationpath
value  DISABLETHEMES 

如果您希望操作系统上的所有用户都使用相同的设置,那么对于当前用户,仅设置 HKEY_CURRENT_USER 条目就足够了。

当您在 HKEY_LOCAL_MACHINE 中进行输入时,应用程序 exe 不知何故不知道它。但是当您在 HKEY_CURRENT_USER 下进行输入时,应用程序会立即识别设置。

相关内容