Ricerca del percorso di Windows in LoadLibrary con manifest
-
03-07-2019 - |
Domanda
Se chiami LoadLibrary
senza un percorso (ad es. LoadLibrary (" whatever.dll ")
, Windows seguirà generalmente il suo algoritmo di ricerca standard, lo stesso utilizza per trovare EXE.
La mia domanda è questa: supponiamo che un manifest dell'applicazione specifichi una versione particolare di una DLL di sistema, diciamo comctl32.dll 6.0. In tal caso, LoadLibrary (" comctl32.dll ")
andrà immediatamente nella cartella side-by-side corretta o eseguirà comunque qualche tipo di ricerca?
Soluzione
Da Microsoft:
Le applicazioni possono controllare la posizione da cui viene caricata una DLL specificando un percorso completo, utilizzando il reindirizzamento DLL o utilizzando un manifest. Se nessuno di questi metodi viene utilizzato, il sistema cerca la DLL al momento del caricamento, come descritto in questo argomento.
Quindi sì, se è presente un manifest, andrà direttamente nella cartella SxS.
Altri suggerimenti
Per sondare il caricatore in caso di problemi con librerie mancanti, puoi utilizzare il " sxstrace " caratteristica. www.codeproject.com/KB/DLL/QueryAssemblyIdentities.aspx fornisce alcuni dettagli sulle dipendenze tra manifest e WinSxs.