Devo acrescentar: você não deve colocar suas dll em \ system32 \ de qualquer maneira! Modifique seu código, modifique seu instalador ... encontre uma casa para seus bits que NÃO esteja em nenhum lugar em c: \ windows \
Por exemplo, seu instalador coloca suas DLLs em:
\program files\<your app dir>\
or
\program files\common files\<your app name>\
( Nota : A maneira como você realmente faz isso é usar o ambiente var:% ProgramFiles% ou% ProgramFiles (x86)% para descobrir onde está o arquivo de programas .... você não assume que seja c: \ arquivos de programas \ .. ..)
e depois define uma marca de registro:
HKLM\software\<your app name>
-- dllLocation
O código que usa as dlls lê o registro e vincula dinamicamente às dlls nesse local.
O acima é o caminho inteligente a seguir.
Você nunca instala suas DLLs ou DLLs de terceiros em \ system32 \ ou \ syswow64. Se você precisar carregar estaticamente, coloque suas dlls no diretório exe (onde elas serão encontradas). Se você não conseguir prever o diretório exe (por exemplo, outro exe chamará sua dll), talvez seja necessário colocar seu diretório dll no caminho de pesquisa (evite-o, se possível!)
system32 e syswow64 são para arquivos fornecidos pelo Windows ... não para outros arquivos . A única razão pela qual as pessoas adquiriram o mau hábito de colocar coisas lá é porque elas estão sempre no caminho de pesquisa, e muitos aplicativos / módulos usam links estáticos. (Então, se você realmente entender, o pecado real é a vinculação estática - isso é pecado no código nativo e no código gerenciado - sempre sempre vincula dinamicamente!)