RXL,
Джон, да, всякие dummy функции и LoadLibrary подразумевают "изменение вызывающего модуля". Я эти модули не контролирую - это разные приложения, большинство из которых я в глаза не видел, и написанные чёрте знает кем (во всех коннотациях этого выражения).
скорей всего придётся менять винду
Ты пессимист. При обычной сборке DLL с использованием dllexport вместе с DLL формируется lib. Этот lib собирается вместе с "вызывающим модулем". Если этот lib прилинкован, DLL загружается автоматически при старте "вызывающего модуля".
В принципе, никто не мешает такой lib реализовать вручную, написав в нём LoadLibrary и всё прочее.
Но это потребует как минимум пересборки "вызывающих модулей", и ко всему прочему некоторые из них могут вообще грузить DLL при помощи LoadLibrary. Поэтому решение через lib годится только для новых или пересобираемых "вызывающих модулей" (без их изменения на уровне их исходного кода).
А вот с .NET assembly вообще беда. В частности, если собрать DLL, написанную на C++.NET, одновременно являющуюся обычной DLL и assembly, то при подключении этой DLL как assembly к другой assembly DllMain вообще не стартует, поскольку assembly загружаются при помощи своего особого механизма. И что с этим делять, я пока не знаю. Аналога lib-файла в .NET нет. Вернее, есть загадочные module в противовес assembly, но я нигде никогда не видел их применения на практике, допустим, в C#.