У меня есть забавная проблема:
Программа, которую я написал, использует DLL. После установки обе программы и DLL находятся в каталоге c: \ Program Files (x86) \ MyProduct.
Обычно загружаемая DLL является Сторонний водитель. В целях тестирования я заменил его собственной реализацией. Когда я перезаписать стороннюю DLL моей собственной в папке программных файлов моя программа EXE не может запустить DLL, LoadLibraray возвращает 0, а GetLastError возвращает -529697949. Теперь, когда я копирую всю папку MyProduct в, скажем, c: \ temp и запускаю программу EXE, DLL может быть загружена.
Так что я думаю, что моя проблема связана с безопасностью Windows. И программа, и моя версия DLL написаны на C ++. Моя учетная запись пользователя имеет права администратора, и не имеет значения, запускаю ли я программу от имени администратора или нет. Кто-нибудь знает, есть ли механизм защиты Windows, который может предотвратить загрузку DLL?
Спасибо
Обновить
Я думаю, что проблема связана с тем фактом, что моя DLL пытается записать в каталог выполнения в функции инициализации DLL. При выполнении в директории Program Files окна не допускают этого.
Да, я наконец запустил его. Проблема в том, что моя DLL пыталась записать в папку exe во время инициализации DLL. Кажется, Windows обнаруживает это, и вызов LoadLibrary завершается неудачно.