2

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


我有一种偷偷摸摸的怀疑,advapi32.dll 将不得不参与其中,但我可能离基地很远。

谢谢。

4

1 回答 1

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.

于 2014-06-26T12:16:44.913 回答