Je devrais ajouter: vous ne devriez pas mettre vos DLL dans \ system32 \ de toute façon! Modifiez votre code, modifiez votre installateur ... trouvez une maison pour vos bits qui n'est PAS n'importe où sous c: \ windows \
Par exemple, votre programme d'installation place vos DLL dans:
\program files\<your app dir>\
or
\program files\common files\<your app name>\
( Remarque : La façon dont vous effectuez cette opération consiste à utiliser l'environnement var:% ProgramFiles% ou% ProgramFiles (x86)% pour trouver où se trouvent Program Files .... vous ne supposez pas qu'il s'agit de c: \ program files \ .. ..)
puis définit une balise de registre:
HKLM\software\<your app name>
-- dllLocation
Le code qui utilise vos DLL lit le registre, puis établit un lien dynamique vers les DLL à cet emplacement.
Ce qui précède est la façon intelligente de procéder.
Vous n'installez jamais vos DLL ou des DLL tierces dans \ system32 \ ou \ syswow64. Si vous devez charger statiquement, vous mettez vos dlls dans votre répertoire exe (où ils seront trouvés). Si vous ne pouvez pas prédire le répertoire exe (par exemple, un autre exe va appeler votre dll), vous devrez peut-être mettre votre répertoire dll dans le chemin de recherche (évitez-le si possible!)
system32 et syswow64 sont pour les fichiers fournis par Windows ... pas pour les fichiers de quiconque . La seule raison pour laquelle les gens ont pris la mauvaise habitude de mettre des choses là-dedans, c'est parce qu'elles sont toujours dans le chemin de recherche, et de nombreuses applications / modules utilisent des liens statiques. (Donc, si vous y arrivez vraiment, le vrai péché est la liaison statique - c'est un péché dans le code natif et le code managé - toujours toujours toujours dynamiquement!)