Я должен добавить: вы не должны помещать ваши DLL в \ system32 \ в любом случае! Измените свой код, измените ваш установщик ... найдите дом для ваших битов, который НЕ находится где-нибудь в c: \ windows \
Например, ваш установщик помещает ваши dll в:
\program files\<your app dir>\
or
\program files\common files\<your app name>\
( Примечание : способ, которым вы на самом деле делаете это, это использование среды var:% ProgramFiles% или% ProgramFiles (x86)%, чтобы найти, где находятся Program Files .... вы не предполагаете, что это c: \ program files \ .. ..)
а затем устанавливает тег реестра:
HKLM\software\<your app name>
-- dllLocation
Код, который использует ваши dll, читает реестр, а затем динамически связывается с dll в этом месте.
Выше это умный путь.
Вы никогда не устанавливаете свои dll или dll сторонних разработчиков в \ system32 \ или \ syswow64. Если вам нужно статически загрузить, вы помещаете свои dll в exe dir (где они будут найдены). Если вы не можете предсказать exe dir (например, какой-то другой exe собирается вызвать вашу dll), вам, возможно, придется поместить dll dir в путь поиска (избегайте этого, если это вообще возможно!)
system32 и syswow64 предназначены для файлов, предоставляемых Windows ... ни для каких других файлов . Единственная причина, по которой у людей появилась плохая привычка размещать материал, заключается в том, что он всегда находится в пути поиска, а многие приложения / модули используют статическое связывание. (Так что, если вы действительно дойдете до этого, настоящий грех - статическое связывание - это грех в нативном коде и управляемом коде - всегда всегда динамически связывать!)