让程序在兼容模式下运行另一个没有它的程序

时间:2014-06-02 18:26:46

标签: windows-7 vb6 windows-xp autodesk compatibility-mode

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


我怀疑advapi32.dll将不得不参与其中,但我可能会离开基地。

感谢。

1 个答案:

答案 0 :(得分:0)

您是否尝试过使用CreateProcess?请参阅此知识库文章:http://support.microsoft.com/kb/129797

您可以尝试在dwCreationFlags中设置CREATE_NEW_PROCESS_GROUP。

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)

或者您可以尝试在创建新流程之前将环境变量__COMPAT_LAYER重置为空,如下所述:http://support.microsoft.com/kb/286705

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

SetEnvironmentVariable("__COMPAT_LAYER", "")

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