Windows 7 让一个处于兼容模式的程序运行另一个没有兼容模式的程序

Windows 7 让一个处于兼容模式的程序运行另一个没有兼容模式的程序,windows-7,vb6,windows-xp,autodesk,compatibility-mode,Windows 7,Vb6,Windows Xp,Autodesk,Compatibility Mode,我们有一个程序(我们称之为目录),它必须在Windows7(而不是VM版本)的XP兼容模式下运行。但是,目录启动的另一个程序(Autodesk Voloviewer)在用户退出后往往根本不会关闭,因为它不喜欢在XP兼容模式下运行。有没有办法从VB6启动不继承兼容模式的程序 我暗自怀疑advapi32.dll将不得不参与进来,但我可能会偏离正题 谢谢。您是否尝试过使用CreateProcess?请参阅此知识库文章: 您可以尝试在dwCreationFlags中设置CREATE_NEW_PROCE

我们有一个程序(我们称之为目录),它必须在Windows7(而不是VM版本)的XP兼容模式下运行。但是,目录启动的另一个程序(Autodesk Voloviewer)在用户退出后往往根本不会关闭,因为它不喜欢在XP兼容模式下运行。有没有办法从VB6启动不继承兼容模式的程序


我暗自怀疑advapi32.dll将不得不参与进来,但我可能会偏离正题


谢谢。

您是否尝试过使用
CreateProcess
?请参阅此知识库文章:

您可以尝试在dwCreationFlags中设置CREATE_NEW_PROCESS_组

Private Const CREATE_NEW_PROCESS_GROUP As Long = &H200&

lSuccess = CreateProcess(sNull, _
                                 "Calc.exe", _
                                 ByVal 0&, _
                                 ByVal 0&, _
                                 1&, _
                                 NORMAL_PRIORITY_CLASS or CREATE_NEW_PROCESS_GROUP, _
                                 ByVal 0&, _
                                 sNull, _
                                 sInfo, _
                                 pInfo)
或者,您可以尝试在创建新进程之前将环境变量\uuu COMPAT\u LAYER重置为空,如下所述:

或者,您可以使用
CreateProcess
传递自己的环境设置

Public Declare Function SetEnvironmentVariable Lib "kernel32.dll" Alias "SetEnvironmentVariableA" _
    (ByVal lpName As String, ByVal lpValue As String) As Long

SetEnvironmentVariable("__COMPAT_LAYER", "")