Dll está no System32 versus caminho do sistema

Dll está no System32 versus caminho do sistema

No Windows, qual é a preferência de como o Windows procura nessas pastas para encontrar .dlls? Por exemplo, se eu tiver duas versões da mesma dll, uma na pasta System 32 e outra no caminho do sistema, onde o Windows olha primeiro?

Responder1

O Windows primeiro procura por "DLLs conhecidas", como Kernel32.dll e User32.dll.

O Windows então procura as DLLs na seguinte sequência:

O diretório do sistema Windows. A função GetSystemDirectory recupera o caminho deste diretório.

O diretório do Windows. A função GetWindowsDirectory recupera o caminho deste diretório.

O diretório onde está localizado o módulo executável do processo atual.

O diretório atual.

Os diretórios listados na variável de ambiente PATH.

Observe que em processos de 32 bits do Windows de 64 bits usam o diretório system32 de 32 bits - não o de 64 bits.

É um pouco diferente antes do SP1 de 2k3 ou XP.

Responder2

Depende da sua PATHvariável de ambiente, mas geralmente %windir%\System32é adicionada antes do %windir%.

Usando meu chapéu de desenvolvedor: sempre que possível eu evitaria instalar qualquer coisa em qualquer uma dessas pastas, especialmente para versões recentes de sistemas operacionais com suporte para montagem lado a lado (por exemplo, XP/Vista/2008).

Se você instalou um aplicativo que coloca um .DLL em ambos os lugares, entrarei em contato com o desenvolvedor para corrigi-lo.

Responder3

Dê uma olhada nisso:

http://msdn.microsoft.com/en-us/library/7d83bc18(VS.80).aspx

Observe a mensagem "O pedido foi alterado!" comentário que faz referência a esta página:

http://msdn.microsoft.com/en-us/library/ms972822.aspx

Responder4

O carregamento de DLL é feito pela função LoadLibrary da API do Windows e a ordem de pesquisa é descrita na documentação para isso:http://msdn.microsoft.com/en-us/library/ms684175(VS.85).aspx

informação relacionada