Não é possível registrar / carregar DLL fora da pasta contida

0

Eu tenho um aplicativo (x64) que faz uso de um tempo de execução de terceiros, e o aplicativo está tendo problemas com o carregamento desse tempo de execução por meio de suas DLLs (também x64).

O Windows Installer se esforça para registrar essas DLLs (presumivelmente por um motivo semelhante) e, como tal, testei o registro das DLLs usando o regsvr32 e descobri um comportamento interessante. Eu posso obter as DLLs para registrar com êxito e cancelar o registro com regsvr32 (eu posso encontrá-los no registro em CLSIDs posteriormente), mas somente se eu executar o regsvr32 de dentro da pasta em que as DLLs estão armazenadas. Eu uso caminhos relativos (por exemplo, .... \ outer \ dlls \ binary.dll) de dentro da pasta onde eles estão armazenados, eles ainda se registram com sucesso. Eu tentei com um caminho completo e caminhos parciais, de cerca de 4 para 1 níveis acima no caminho, e todos falharam.

O erro que sempre retorna é "Acesso inválido a um local de memória." O que é apenas vago o suficiente para ser muito difícil encontrar a origem.

Alguém tem alguma experiência com esse problema? Alguém sabe o que poderia ser a causa? Estranho que funcione de dentro da pasta, mas não de qualquer outro lugar. Eu só posso supor que há algum problema ambiental ou corrupção como eu tenho outras máquinas onde não há problema algum. Eu executei a ferramenta de reparo do .NET, mas não pareceu fazer nenhuma diferença.

    
por Luke 11.07.2017 / 13:39

0 respostas