昨天下载打开 kibana (es 的可视化软件),报错:

无法定位程序输入点 GetHostNameW 于动态链接库 WS2_32.dll 上

以为是缺少动态链接库 ws2_32.dll 的问题,就去下载了这个库,替换了 System32 及 SysWOW64 下的问题,这时候其实已经是出了大问题了。一是没有备份原有的问题;二是既然文件存在说明肯定不是缺失库造成的问题,替换新文件反而是无事生非。

然后今天就出现了这个 应用程序无法正常启动(0xc000007b) 的问题,网络也连接不上。这才意识到之前替换了系统文件造成事故了,一招不慎就可能要重装系统。

一开始先根据这个错误去搜索解决方案:应用程序无法正常启动(0xc000007b)的解决办法

方法一:管理员运行 cmd,输入 sfc /scannow 指令让系统开始扫描文件并自动修复有问题的文件
方法二:下载使用 DirectX 修复工具3.7增强版 来修复文件

尝试了一番,都没有用。其中方法一里日志 C:\Windows\Logs\CBS\CBS.log 报错:STATUS_OBJECT_NAME_NOT_FOUND...系统修复类问题 里说是 是没有读写的权限,估计目前帐户没有系统文件的读写权,这跟解决问题无关。

之后下载了驱动精灵、Windows清理助手 3 及 360 的系统急救箱,都不能修复这个问题。这时候意识到这些工具能够检测的或者侧重点都并非对 windows 系统内文件是否修改,是否兼容匹配,而是大概率只能检测文件关键文件缺失等问题,我这是自己替换了动态链接库,它们压根就检测不到。

回到问题原点,修改替换了的 ws2_32.dll 文件。经过一番波折(下载新的替换上去没有用),找到了一个国外的下载网站 DLL-FILES.COM。按照提示下载了最新版本的 64 位和 32 位版本分别替换到目录 System32 及 SysWOW64 下。再次重启,似乎报的错更多了 (/ω\) 。

没有去尝试下载那些低版本的 dll 问题(上面的版本号也没说对应支持 windows 什么版本,再起尝试太浪费时间了),而是从同事的电脑上复制来了两个文件,然后分别替换。再次重启,好了。