Me temo que muy pocas personas conocen la causa raíz del misterioso error de inicio de EXE 0xC0000018 porque Microsoft lo hace vago, incluso hasta Windows 10. Cuando leí las aplicaciones de programación de Jeffrey Richter para MS Windows 4th-ed, lo descubrí.
Si una DLL requiere ser cargada en una dirección fija (en el espacio de direcciones virtuales del proceso), pero el requisito no puede cumplirse, Windows confirma el error 0xC0000018. Pero no hay una pista aparente para saber qué DLL (s) causan el problema. Una simple búsqueda en Google de "0xC0000018" simplemente te muestra muchas publicaciones de usuarios desconcertados.
Para reproducir, puede preparar una solución (término de Visual Studio) con un EXE y dos DLL, y configurar ambos DLL para que tengan la opción de vinculador /FIXED /BASE:"0x44440000"y que el EXE cargue implícitamente los dos DLL, luego verá un error 0xC0000018 al iniciar EXE.
Y sí, limpiar APPINIT_DLLSen el registro es su primera apuesta para deshacerse de los posibles culpables. Esas DLL se cargarán en cada proceso que inicie, por lo que puede arruinar su vida.
Entonces, ¿cómo identificar la DLL culpable real? Quizás haya una manera, use dumpbin.exe para verificar cada DLL APPINIT_DLLSu otras posibles DLL cargadas automáticamente (ayuda con AutoRuns ), verifíquelas una por una dumpbin -headers. Si no hay una .relocsección, es una DLL de ubicación fija .