VMWare VpxClient AxQuickMksAxCTL /对象未设置NX / DEP – 不closuresDEP

VMWare VpxClient.exe在数据执行保护(DEP)方面存在问题,导致相当多的客户端function不可用。

  • http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1027130

症状:

  • 无法访问控制台
  • 错误消息“无法获取'AxQuickMksAxCtl'控件的窗口句柄,不支持无窗口的ActiveX控件”。
  • 错误消息“对象未设置为对象的实例”。

使用系统控制面板应用程序closures此应用程序的DEP不起作用,它会失败,并显示错误“该程序必须在启用数据执行保护(DEP)的情况下运行,不能closures该程序的DEP。

VMWarebuild议使用BCDEdit.exe全局closuresDEP。 显然这是不可取的。

我find了解决办法,我在这里贴出来帮助别人。

问题的原因是DEP与某些组件不兼容。 (猜测:这可能是一个ATL 7.1的ActiveX控件,因为这个版本的ATL有一个已知的问题)。

您无法为VpxClient.exe禁用DEP的VpxClient.exe是因为标志NXCOMPAT在可执行文件中设置,强制启用DEP,并阻止您selectexe。

这已经成为Visual Studio最新版本的默认select,因此可能不是VMWare的一个有意识的决定。

解决scheme是使用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在签署二进制文件之前执行此操作。