我们有一个程序(我们称之为一个目录),它必须在 Windows 7(不是 VM 版本)中以 XP 兼容模式运行。但是,另一个目录启动的程序 (Autodesk Voloviewer) 在用户退出后往往根本不会关闭,因为它不喜欢在 XP 兼容模式下运行。有没有办法从不继承兼容模式的 VB6 启动程序?
我有一种偷偷摸摸的怀疑,advapi32.dll 将不得不参与其中,但我可能离基地很远。
谢谢。
我们有一个程序(我们称之为一个目录),它必须在 Windows 7(不是 VM 版本)中以 XP 兼容模式运行。但是,另一个目录启动的程序 (Autodesk Voloviewer) 在用户退出后往往根本不会关闭,因为它不喜欢在 XP 兼容模式下运行。有没有办法从不继承兼容模式的 VB6 启动程序?
我有一种偷偷摸摸的怀疑,advapi32.dll 将不得不参与其中,但我可能离基地很远。
谢谢。
你试过使用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
.