busca caminho do Windows em LoadLibrary com manifesto
-
03-07-2019 - |
Pergunta
Se você chamar LoadLibrary
sem um caminho (por exemplo, LoadLibrary("whatever.dll")
, o Windows geralmente seguem seu algoritmo de busca padrão, a mesma que ele usa para encontrar EXEs.
A minha pergunta é a seguinte: suponha que um aplicativo especifica se manifestam especifica uma versão específica de uma DLL do sistema, digamos, comctl32.dll 6.0. Nesse caso, será LoadLibrary("comctl32.dll")
ir imediatamente para a pasta correta side-by-side, ou ele ainda realizar algum tipo de pesquisa?
Solução
A partir Microsoft:
Os aplicativos podem controlar o local do qual uma DLL é carregada, especificando um caminho completo, usando o redirecionamento DLL, ou usando um manifesto. Se nenhum destes métodos são utilizados, o sistema procura a DLL em tempo de carregamento, conforme descrito neste tópico.
Então, sim, se um manifesto estiver presente, ele irá diretamente para a pasta SxS.
Outras dicas
Para sondar o carregador quando tendo problemas com bibliotecas ausentes, você pode usar o recurso "sxstrace". www.codeproject.com/KB/DLL/QueryAssemblyIdentities.aspx dá alguns detalhes sobre as dependências entre manifesto e winsxs.