如何在XP兼容模式下启动另一个进程?

时间:2010-01-25 19:37:18

标签: winapi windows-7 windows-vista installer createprocess

我们的应用程序需要安装HASP SRM设备驱动程序才能安装和运行。

此时,只有他们的5.50驱动程序在所有测试平台上都能正常工作(他们的5.75(官方)和5.86(测试版)驱动程序在测试的大约三分之一的计算机中崩溃)。

因此,他们的5.50驱动程序是好的,当前可用的任何其他东西都被破坏了,5.50驱动程序拒绝在Vista和Windows 7下加载。但是,如果我将exe的属性设置为“XP兼容模式”,那么他们的5.50驱动程序安装并成功运行。

我在Windows 7下的注册表中进行了挖掘,并且发现在我要求兼容模式时至少有一个条目:

HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\
    full-path REG_SZ WINXPSP3

在尝试启动5.50驱动程序安装程序之前,我应该可以从安装程序添加该密钥。

问题:

  • 哪里可以找到更完整的兼容模式讨论?
  • Vista与Windows 7下的键/设置是否不同?
  • 32位与64位之间的键/设置是否不同?
  • 当我调用CreateProcess()时,有没有办法直接询问这个?

1 个答案:

答案 0 :(得分:3)

您可以设置__COMPAT_LAYER环境变量(通过在调用CreateProcess之前在流程中设置它,或者为CreateProcess构建新的环境块)