通过代码在注册表中设置WinXP兼容模式不起作用

时间:2014-09-10 10:03:53

标签: windows registry windows-xp compatibility

在Win7 / 8下,我想通过在安装软件时在注册表中添加一个值来强制软件的WinXP兼容模式,这样最终用户就不必手动设置它。

我创建了一个setup.exe,用于安装包含所有必需文件的软件。安装程序在此位置的注册表中创建一个新的字符串值条目:

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
"C:\\PathToTheApp\\App.exe"="WINXPSP3"

如果我打开应用程序的属性窗口(使用资源管理器),将检查所有用户的兼容性模式,但是当我运行应用程序时,未启用XP模式,Windows不发生事件,询问我是否允许该应用程序跑。

如果我使用属性窗口(使用资源管理器)禁用并重新启用它,那么它可以工作。当我运行应用程序时,Windows会询问我是否允许该应用程序运行并将更改应用于计算机并且XP兼容性处于活动状态。上面的注册表项是由资源管理器进程创建的。

  • 我尝试在设置完成后重新启动计算机,但它不起作用。
  • 我尝试调用 SHChangeNotify()将新设置通知给shell,但它不起作用。
  • 我尝试手动添加注册表项但不起作用。
  • 设置要求管理员权限,以便它可以在HKEY_LOCAL_MACHINE中写入。

我用谷歌搜索了几天,但每次我发现我应该只创建上面的注册表值。

有没有人有想法?

感谢。

0 个答案:

没有答案