Windows系统关键目录很多,这些目录文件有缺失或存在异常或出现新文件可能导致严重后果,下面举几种常见例子,后续遇到了新case会再增补。
1、drivers目录,C:WindowsSystem32drivers
该目录存放系统驱动文件,一般按时间倒序排列能看到最新引入的驱动文件(有些新安装的软件集成的驱动比较旧也可能出问题),可用process explorer定位,最好找到引入驱动的软件官网查询去除驱动的办法,贸然直接干掉驱动可能导致系统异常,参考这个case:https://cloud.tencent.com/developer/article/1957099
驱动兼容性不好的话,可能导致蓝屏宕机、死机、远程或vnc无响应、内存泄漏等,例如内存泄漏的case:https://cloud.tencent.com/developer/article/1948812
2、CatRoot目录,C:WindowsSystem32CatRoot
误删除了C:WindowsSystem32CatRoot{F750E6C3-38EE-11D1-85E5-00C04FC295EE} 导致系统异常,报错critical service failed,错误码0xC000021A,并且F8所有分支包括3种安全模式(安全模式、网络安全模式、命令行安全模式)都进不去系统,报错信息都一样。
解决办法:拷贝系统差异很接近的正常系统的文件,在winpe下替换到原位置,重启机器后顺利进入系统
3、CatRoot2目录,C:WindowsSystem32CatRoot2
CatRoot、CatRoot2跟windows update有关系,这2个目录尽可能不要动CatRoot,这2个目录有异常,最直接影响的就是update,严重的话进不去系统。如果update有异常,可以逐条尝试如下命令
net stop msiserve
net stop cryptsvc
net stop BITS
net stop WUAUSERV
Ren c:windowsSoftwareDistribution SoftwareDistribution.bak
Ren c:windowssystem32catroot2 catroot2.bak
net start msiserve
net start cryptsvc
net start BITS
net start WUAUSERV
4、assembly目录,C:Windowsassembly
该目录数据缺失,会导致.msc命令执行报错,参考https://cloud.tencent.com/developer/article/1936608
解决办法:从正常系统拷贝,在winpe下替换
5、C:WindowsSystem32*.dll
C:WindowsSystem32 目录的一些.dll动态库文件、C:WindowsSystem32drivers 目录的一些.sys驱动文件,可能导致进不去系统。
遇到过一个case,https://cloud.tencent.com/developer/article/1871412
解决方案:从正常系统拷贝,在winpe下替换,然后参考https://cloud.tencent.com/developer/article/1930775
6、Fonts目录,C:WindowsFonts
该目录是存放字体文件的,但病毒木马爱钻这个目录
由于该目录在UI上不像普通文件夹,不易发现里面的异常文件,可参考https://cloud.tencent.com/developer/article/1613296
7、C:ProgramDataMicrosoftWindowsCaches*.dll
该目录默认没有.dll文件,存在话可能就是病毒木马钻这里了,之前遇到过一个case,系统进不去,转圈,其他F8分支都进不去系统,安全模式可以进系统
https://cloud.tencent.com/developer/article/1938502
有个注册表可以调C:ProgramData的位置,一般是不建议动ProgramData目录位置的,因为很多地方依赖它,遇到过改ProgramData位置导致系统异常的的case:https://cloud.tencent.com/developer/article/1935717
8、C:WindowsResourcesThemes 主题目录如果缺失aero*,可能导致看不到图形界面
解决办法:从正常系统拷贝,在winpe下替换
9、AppLocker目录,C:WindowsSystem32AppLocker
该目录默认是空文件夹,删除可能导致系统开始菜单异常
sihost.exe对应的进程名为shell infrastructure host 「外壳shell基础设施infrastructure宿主host」,就是和OS的外壳有关的东西都依赖它,不能关闭
开始菜单报错一般是因为ShellExperienceHost(简写SEH,3个单词首字母)起不来导致的问题,我们查看了当时的任务管理器,确实没有看到SEH在运行,查看app log也没有SHE的crash报错,这个问题应该发生在Sihost.exe去激活SEH的过程中出现的问题
程序包Microsoft.Windows.ShellExperienceHost_ 部署被AppLocker阻止。
procmon能监测到 CreateFile C:WindowsSystem32AppLockerAPPX.AppLocker PATH NOT FOUND
在问题机器中发现C:windowssystem32下面不存在AppLocker这个文件夹,而正常机器中是有的,默认是空的
创建了一个新文件夹命名为AppLocker之后,点击开始菜单,可以正常工作。
也可以使用第三方软件StartIsBack(适用Win10、不适用Win11,适用Win11的是StartAllBack)改造开始菜单为经典菜单
10、C:WindowsSystem32appmgmt ,别看子目录是空的,Windows系统博大精深(处处是坑),别看见空的就想删,上面的AppLocker就是例子
appmgmt是个服务,sc qc appmgmt
sc qdescription appmgmt
描述: 为通过组策略部署的软件处理安装、删除以及枚举请求。如果该服务被禁用,则用户将不能安装、删除或枚举通过组策略部署的软件。如果此服务被禁用,则直接依赖于它的所有服务都将无法启动。
11、C:Program FilesCloudbase Solutions,这是系统组件,禁用或删除会影响系统重置密码等功能,具体请参考https://cloud.tencent.com/developer/article/1883449
12、C:WindowsSystem32config
举2个case
①
系统进不去,报错注册表文件C:WindowsSystem32configSYSTEM损坏,替换为C:WindowsSystem32configRegBackSYSTEM后重启机器,蓝屏,报BAD SYSTEM CONFIG INFO,整体替换为备份注册表C:WindowsSystem32configRegBack目录的DEFAULT、SYSTEM、SOFTWARE、SECURITY、SAM后重启重新识别硬件并最终顺利进入系统。
②进系统特别慢,发现C:WindowsSystem32configRegBackSYSTEM 这个文件就1.5G,用微软出的特殊软件 dureg 或第三方注册表软件可以定位具体是哪个子目录最大,在有备份的情况下,可删除异常的子目录来改造SYSTEM注册表使之变小后放回原系统开机对比。
【问题原因】驱动问题导致System注册表占用过大(1.5G),系统无法加载,通过查询src mouse sideband发现与Multipoint Service有关:
http://www.yourpcdrivers.com/drivers/src-mouse-sideband-1/59349/89da474cc143387cfaa1964e5cae19eb
为什么是1.5G,请参考如下:
https://docs.microsoft.com/zh-cn/windows/win32/sysinfo/registry-storage-space
打开Registry Workshop → 文件 → 加载配置单元 → 接下来,通常我们只需要查看ControlSet001、ControlSet002和CurrentControlSet三个项的属性即可,通过查看所有子项数目即可初步判断,超过1万条的就有疑问。
顺藤摸瓜,当注册表子项条目过多时,可以通过双击展开其子子项,通过展开条目数也可以快速定位问题注册表位置,问题现象:当其子子项过多时,加载非常慢甚至出现无响应。发现异常注册表项时(非系统关键注册表),可以对其进行批量删除即可。注意:注册表操作前建议先备份。
前面我们用到了“查看属性、双击展开”方式来看注册表子项数目,下面我们通过经验判断查找可能的异常子项,如:Enum子项应该优先关注带大括号{}的子项,这样方便快速定位问题注册表项
在删除SRCMouPdo时无法删除,提示权限不足,查看属性发现只有system用户才能操作,这就需要提权操作(先在属性里勾选system用户,勾选后还是不行,再提权),参考https://cloud.tencent.com/developer/article/1880777
最终将处理好的SYSTEM注册表通过winpe放回原机器,并执行chkdsk /f 检查文件系统无异常后重启验证效果可快速进入系统。
13、C:WindowsSystem32ucrtbase.dll
此文件损坏(比如在update时发生损坏),会导致蓝屏进不去系统,机器安全模式选项无法进入,修复启动引导也无济于事,报错:0xc000007b
从日志看,C:WindowsSystem32ucrtbase.dll损坏,从正常系统替换这个文件后顺利进入系统,但还是发现其他问题,分析日志是update环节可能出了问题,损坏的文件不止1个,因此选择备份业务数据后重装系统
14、C:WindowsSystem32perf*.dat
C:WindowsSystem32perfc009.dat
C:WindowsSystem32perfd009.dat
C:WindowsSystem32perfh009.dat
C:WindowsSystem32perfi009.dat
这4个文件丢失或损坏,会出现远程不上(远程在证书黄色感叹号界面瞬间报错后,远程服务自动停止运行)、servermanager右上侧红色小旗子报错refresh failed且安装或卸载角色时拉不出角色列表、安装wireshark安装不上npcap、磁盘管理器不能操作磁盘。
从正常系统拿了这4个文件在winpe里替换后,问题迎刃而解,参考
https://cloud.tencent.com/developer/article/2029140
https://cloud.tencent.com/developer/article/2029138
https://cloud.tencent.com/developer/article/2043666
15、C:WindowsSystem32DriverStore目录文件缺失
我遇到的情况是C:WindowsSystem32DriverStoreFileRepository下的子目录都存在,但是里面的文件都没有了,导致自定义镜像购买的新机器没法识别到完整的驱动,出现键盘有效、鼠标失灵、不能正常加载网卡的情况。
从正常系统拿了C:WindowsSystem32DriverStore目录,在winpe下整体替换后恢复正常。
16、C:Windowsapppatch目录有奇怪的.sdb文件,文件名中有关键词CA4A560E
现象:登录卡在"请稍候" "请等候 User Profile Service","禁用驱动程序强制签名"登录正常
这个是我遇到最难的问题,单独写了文档https://cloud.tencent.com/developer/article/1942103
17、最关键文件C:WindowsSystem32svchost.exe 缺失
现象:黑屏
解决办法:从正常系统拿了该文件,在winpe下恢复到原位置
正常来说,system32和syswow64目录都有一个svchost.exe,异常的系统通过winpe everything搜索发现缺少C:WindowsSystem32svchost.exe,从正常系统拿文件放到原位置即可
另外,异常系统在winpe下使用360系统急救箱还发现安全问题,有个svchcst.exe的木马,C:WindowsSystem32svchost.exe 缺失可能跟这个木马有关。
用registry workshop全局搜了svchcst.exe,发现该木马注册了服务,删除木马文件并清理注册表,恢复svchost.exe后顺利进入系统,安全杀毒软件全盘杀毒。
18、C:WindowsSystem32SMIStoreMachineSCHEMA.DAT
安装补丁更新失败,提示报错0x8007371
CBS日志有registrymachineSchema
SCHEMA.DAT损坏或不存在会影响update报错
重命名了SCHEMA.DAT,然后重启机器,运行control.exe /name Microsoft.WindowsUpdate 打开update界面检查补丁更新,自动生成了新的SCHEMA.DAT文件,补丁也可以正常安装了。
19、其他Windows关键目录,可参考https://cloud.tencent.com/developer/article/1618592