Я боюся, що мало хто знає першопричину загадкової помилки запуску EXE 0xC0000018 EXE, оскільки Microsoft робить це невиразним, навіть до Windows 10. Коли я читав програми для програмування Джефрі Ріхтера для MS Windows 4-ї редакції, я випадково виявив це.
Якщо DLL потрібно завантажувати за фіксованою адресою (у віртуальному просторі адреси), але цю вимогу неможливо виконати, Windows стверджує саму помилку 0xC0000018. Але немає явної підказки сказати, які DLL (s) викликають проблему. Простий пошук у Google "0xC0000018" просто відкриває вам безліч публікацій ошелешених користувачів.
Щоб відтворити, ви можете підготувати рішення (термін Visual Studio) з одним EXE та двома DLL, а також встановити обидва DLL, щоб мати параметр лінкера /FIXED /BASE:"0x44440000"і EXE неявно завантажувати дві DLL, тоді ви побачите помилку 0xC0000018 при запуску EXE.
І так, очищення APPINIT_DLLSв реєстрі - ваша перша ставка, щоб позбутися від можливих винуватців. Ці DLL-файли завантажуватимуться в кожен процес, який ви запускаєте, так що це може зіпсувати ваше життя.
Тоді як точно визначити фактичного винуватця DLL? Можливо, є спосіб, використовуйте dumpbin.exe, щоб перевірити всі DLL-файли APPINIT_DLLSабо інші можливі автоматично завантажені DLL-файли (допомога з AutoRuns ), перевірити їх по черзі dumpbin -headers. Якщо .relocрозділу немає , це DLL з фіксованим розташуванням .