做远程技术的时候经常会碰到,客户电脑被病毒损坏系统文件后不能正常进入系统,或者反反复复的修复系统,然而工作电脑安装了一大堆的软件程序以及数据,这时候又不能重装系统,实在是麻烦,所以只好想一些办法把系统修复看看了。
CMD 管理员的模式运行,然后输入命令 sfc /scannow,这时候系统自动开始扫描,这个命令是用来系统的检查原始镜像里安装系统文件是否有损坏。这个步骤结束后会有两种提示:
第一种:
Windows 资源保护找到了损坏文件并成功修复了它们。
CBS.Log windir\Logs\CBS\CBS.log 中有详细信息。例如
C:\Windows\Logs\CBS\CBS.log
系统文件修复更改在下次重新启动之后生效。
第二种:
Windows 资源保护找到了损坏文件但无法修复
其中某些文件。CBS.Log windir\Logs\CBS\CBS.log 中有详细信息。
例如 C:\Windows\Logs\CBS\C。请注意,在脱机服务方案中,
当前不支持日志记录。BS.log
既然上面的操作步骤已经把损坏的系统文件以日志方式生成,那就好办多了。我们开始执行手动修复!
现列出上面扫描出来的文件,cmd 命令输入:
findstr /C:"[SR] Cannot repair member file" %windir%\logs\cbs\cbs.log >"%userprofile%\Desktop\sfcdetails.txt
执行后会在自己的桌面生成 sfcdetails.txt,打开它可以定位到无法修复的文件,一般损坏文件名称会出现于关键字在 Cannot repair member file 后面类似 jscript.dll 的就是无法修复的文件。
这时候我们就开始把损坏的系统文件替换掉,先把好的文件提取出来。未被损坏的文件只能从当前系统版本对应系统镜像中提取,比如提取 C:\windows\system32\jscript.dll。
假设已经把文件提取完成,
先获取管理权 takeown /f 损坏文件路径。
takeown /f C:\windows\system32\jscript.dll
再获取完全访问权限
icacls C:\windows\system32\jscript.dll /grant administrators:F
然后替换,
假设好文件放在 C 盘根目录 CMD 命令输入
copy C:\jscript.dll C:windows\system32\jscript.dll
提醒:原版未被损坏的文件,建议从同版本的原生系统 ISO 镜像,解压路径:镜像/sources/install.wim, 再用 7z 打开它找到替换文件提取出来。如果附近的同学或者朋友也使用相同的系统版本就更直接了。