双击一个老软件,弹窗只有一行:应用程序无法正常启动 0xc0000142。点确定,程序退出。重启、重装软件都试过,还是这个码。这个错误跟软件本身关系不大,多数是 DLL 初始化失败。
0xc0000142 在系统里对应 STATUS_DLL_INIT_FAILED。程序启动时要加载一串动态库,其中某个库在初始化阶段失败,进程就被终止。常见诱因四个:VC++ 运行库缺失或版本不对、系统文件损坏、权限不足、安全软件拦截。
第一步补运行库,别先重装系统
大部分情况是 Microsoft Visual C++ 运行库的问题。2005 到 2022 这些版本不是向下兼容的,装了 2019 不一定能顶 2015。做法是把 x86 和 x64 两个架构的常用版本都装上,装完重启再试。
注意别装所谓的运行库合集包。这类合集来源杂,有的会把系统里的新版本覆盖成旧版本,反而更糟。去微软官方页面按版本单独下。
系统文件的修复顺序
补完运行库还报,就查系统文件。管理员命令行依次执行:
sfc /scannowDISM /Online /Cleanup-Image /RestoreHealth先 sfc 后 DISM。sfc 修的是系统文件本身,DISM 修的是 sfc 用来修复的组件源。顺序颠倒,sfc 可能因为源损坏而修不好。两条跑完重启。
还剩三种可能
一是权限。程序装在 C 盘根目录或者 Program Files 下,普通用户没有写权限,初始化时创建配置文件失败。右键用管理员身份运行试一次,能开就说明是这个原因。
二是安全软件。某些防护会在 DLL 加载时注入自己的模块,注入失败就报这个码。临时退出防护再启动,能开就把这个程序加白名单。
三是兼容性。十几年前的程序在新系统上跑,需要开兼容模式,选 Windows 7,同时勾上以管理员身份运行。都不行的话,看程序目录里有没有缺 DLL,用依赖查看工具看加载路径,比盲目重装有效。