我们有一个程序(让我们称之为一个目录)必须在Windows 7的XP兼容模式下运行(而不是VM版本)。但是,目录启动的另一个程序(Autodesk Voloviewer)一旦退出就不会关闭,因为它不喜欢在XP兼容模式下运行。有没有办法从VB6启动一个不继承兼容模式的程序?
我怀疑advapi32.dll将不得不参与其中,但我可能会离开基地。
感谢。
答案 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
传递自己的环境设置。