VMWare VpxClient.exe 存在数据执行保护 (DEP) 问题,导致客户端的很多功能不可用。
症状:
- 无法访问控制台
- 错误消息“无法获取‘AxQuickMksAxCtl’控件的窗口句柄。不支持无窗口 ActiveX 控件”。
- 错误消息“对象未设置为对象的实例”。
使用系统控制面板应用程序关闭此应用程序的 DEP 不起作用,它会失败并显示错误“此程序必须在启用数据执行保护 (DEP) 的情况下运行。您无法关闭此程序的 DEP。”
VMWare 建议使用 全局关闭 DEP BCDEdit.exe
。显然这是不可取的。
我找到了解决方案,并将其发布在这里以帮助其他人。
答案1
问题的原因在于 DEP 与某些组件不兼容。(猜测:这可能是 ATL 7.1 activex 控件,因为此版本的 ATL 存在已知问题)。
您无法禁用 DEP 的原因是VpxClient.exe
因为可执行文件中设置了标志NXCOMPAT
,从而强制启用 DEP,并阻止您选择退出该 exe。
这已成为 Visual Studio 最新版本的默认设置,因此这可能不是 VMWare 有意为之。
解决方案是EDITBIN.exe
修改VpxClient.exe
二进制文件并删除该标志。
本质上,在管理 CMD 会话中:
cd /d "C:\Program Files\VMware\Infrastructure\Virtual Infrastructure Client\Launcher"
copy VpxClient.exe VpxClient.Original.exe
"C:\Program Files\Microsoft Visual Studio 10.0\vc\bin\vcvars32.bat"
EDITBIN.EXE /NXCOMPAT:NO VpxClient.exe
(显然,您必须为 64 位系统进行此项更改,或者如果您的工具位于不同的位置)。
它现在可以工作,但会发出警告,因为数字签名不再有效。
现在我们需要的是 VMWare 在签署二进制文件之前执行此操作。