App é iniciado quando DLL na pasta .exe, aparece um erro se DLL no System32 (erro 0xc0000428 “nome dll não é projetado para ser executado no Windows…”)

0

Nós temos um aplicativo (ferramenta de teste), se eu executar o exe e tiver a DLL na mesma biblioteca, ele funcionará corretamente. Se eu mover a DLL para c: \ windows \ system32 e tentar o exe, ele falhará com a seguinte mensagem. Windows 8.1 tablet.

Alguma pista do que pode estar acontecendo? Também tentei assinar a DLL, não vá.

"ou não foi projetado para ser executado no Windows ou contém um erro. Tente instalar ...... Status do erro 0xc0000428"

    
por ranshe 19.12.2013 / 16:21

3 respostas

0

Qualquer que seja o tipo de arquivo .exe, é necessário que ele seja executado no mesmo diretório que o arquivo .dll. O executável não pode encontrar o .dll, um recurso necessário para o aplicativo ser executado corretamente, se estiver fora do mesmo diretório de trabalho. A menos que você seja (ou saiba) o programador que projetou o aplicativo, é improvável que exista uma opção para que o executável encontre esse arquivo .dll, se não estiver no mesmo diretório. Você pode considerar criar um atalho para o .exe e manter o .exe + .dll emparelhado em outro diretório.

    
por 19.12.2013 / 16:30
0

Pode haver duas versões da DLL (com o mesmo nome) no sistema, uma compatível com o sistema e outra que não é.

Quando você tem a DLL 'direita' na pasta com o EXE, esse é o primeiro lugar que ele verifica e, portanto, encontra o caminho certo e o usa.

Se você mover essa DLL em funcionamento para System32, ela estará no PATH, mas agora está mais abaixo na lista de ordem de pesquisa. Quanto mais abaixo depende do seu PATH.

Se a versão não funcional da DLL terminar na ordem de busca à frente da que você moveu para System32, o programa tentará usar essa versão (desde que a encontrou primeiro).

Pesquise todas as pastas em seu sistema para outras versões dessa DLL e (re) mova-a, se possível, para obtê-la da ordem de pesquisa de caminho da DLL.

    
por 19.12.2013 / 18:30
0

Foi um problema de assinatura. Uma vez que ativamos o Modo de Auditoria, estávamos bem (sem mais nenhuma mensagem de erro). Vamos descobrir qual parte precisa assinar qual componente, mas pelo menos sabemos onde procurar.

Obrigado a todos que participaram.

    
por 20.12.2013 / 00:36

Tags