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

Mor*_*hai 6 installer winapi createprocess windows-vista windows-7

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

目前,只有他们的5.50驱动程序在所有测试平台上一致地工作(他们的5.75(官方)和5.86(beta)驱动程序在测试的大约三分之一的计算机中崩溃).

因此,他们的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
Run Code Online (Sandbox Code Playgroud)

在尝试启动5.50驱动程序安装程序之前,我应该能够从安装程序添加该密钥.

问题:

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

And*_*ers 3

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