VMware VpxClient AxQuickMksAxCTL / Objeto não definido NX / DEP - sem desligar a DEP

2

O VMware VpxClient.exe tem um problema com a DEP (Prevenção de Execução de Dados), que resulta na indisponibilidade de grande parte da funcionalidade do cliente.

Sintomas:

  • Não é possível acessar o console
  • Mensagem de erro "Não é possível obter o identificador de janela para o controle 'AxQuickMksAxCtl'. Não há suporte para controles ActiveX sem janelas".
  • Mensagem de erro "Objeto não definido para uma instância de um objeto".

Desativar a DEP para este aplicativo usando o aplicativo do painel de controle do sistema não funciona, ele falha com o erro "Este programa deve ser executado com a proteção de execução de dados (DEP) ativada. Você não pode desativar a DEP para este programa."

O VMWare recomenda desativar o DEP globalmente usando BCDEdit.exe . Claramente isso é indesejável.

Encontrei a solução e estou postando aqui para ajudar outras pessoas.

    
por Ben 02.04.2013 / 13:40

1 resposta

2

A razão para o problema é que a DEP é incompatível com alguns dos componentes. (Adivinhação: Este é provavelmente um controle activex ATL 7.1 como há um problema conhecido com esta versão do ATL).

O motivo pelo qual você não pode desabilitar a DEP para o VpxClient.exe é porque o sinalizador NXCOMPAT está definido no executável, o que força a DEP e impede que você opte pelo exe.

Isso se tornou o padrão com versões recentes do Visual Studio, então provavelmente não foi uma decisão consciente por parte da VMWare.

A solução é usar EDITBIN.exe para modificar o binário VpxClient.exe removendo esse sinalizador.

Essencialmente, em uma sessão administrativa do 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

(Obviamente, você terá que alterar isso, por exemplo, para um sistema de 64 bits ou se suas ferramentas estiverem em um local diferente).

Agora ele funcionará, mas avise quando a assinatura digital não for mais válida.

Agora, tudo o que precisamos é que a VMWare faça isso antes de assinar o binário.

    
por 02.04.2013 / 13:40