Пока DLL находится где-то на пути, который используется приложением, оно должно загружаться правильно. Подход, который вы описали здесь, работает из-за этой черты: System32 всегда на пути.
Вот еще немного информации о , как расположены DLL для загрузки . Ваше приложение может узнать свой собственный путь через
System.Environment.GetEnvironmentVariable("Path");