Debo agregar: ¡No deberías poner tus dll en \ system32 \ de todos modos! Modifique su código, modifique su instalador ... encuentre un hogar para sus bits que NO esté en ninguna parte bajo c: \ windows \
Por ejemplo, su instalador pone sus dlls en:
\program files\<your app dir>\
or
\program files\common files\<your app name>\
( Nota : la forma en que realmente hace esto es usar el entorno var:% ProgramFiles% o% ProgramFiles (x86)% para encontrar dónde está Program Files ... no asume que es c: \ program files \ .. ..)
y luego establece una etiqueta de registro:
HKLM\software\<your app name>
-- dllLocation
El código que usa sus dlls lee el registro, luego se vincula dinámicamente a los dlls en esa ubicación.
Lo anterior es el camino inteligente a seguir.
Nunca instales tus dlls, o dlls de terceros en \ system32 \ o \ syswow64. Si tiene que cargar estáticamente, coloque sus dlls en su directorio exe (donde se encontrarán). Si no puede predecir el directorio exe (por ejemplo, algún otro exe va a llamar a su dll), es posible que deba poner su directorio dll en la ruta de búsqueda (¡evite esto si es posible!)
system32 y syswow64 son para archivos provistos por Windows ... no para nadie más archivos . La única razón por la que la gente tuvo el mal hábito de poner cosas allí es porque siempre está en la ruta de búsqueda, y muchas aplicaciones / módulos usan enlaces estáticos. (Entonces, si realmente te pones a ello, el verdadero pecado es el enlace estático, esto es un pecado en el código nativo y el código administrado, ¡siempre siempre siempre se vincula dinámicamente!)