强力卸载删注册表:安全清理残留的完整指南
简介这份资源面向需要彻底卸载顽固软件、清理注册表残留的Windows用户与系统维护人员核心是UninstallTool工具及其配套组件用于解决常规卸载不干净、恶意软件隐藏痕迹、注册表键值被保护而难以删除等问题。压缩包共11个文件约3.77MB包含exe主程序与辅助可执行文件、dat数据文件、sys驱动文件、inf安装信息、xml配置以及cmd批处理脚本覆盖工具运行与清理所需的各类模块。目前已有4973人学习下载说明该方案在注册表维护场景中具有较高参考价值。读者可获得一套可直接使用的强制卸载与注册表清理工具借助其深入扫描能力定位残留文件与键值配合RemoveService等脚本处理服务项并在操作前通过regedit导出备份以降低误删风险从而提升系统稳定性与安全性。1. 强力卸载删注册表为什么“删干净”比“删得快”难十倍很多人第一次接触“强力卸载删注册表”都是被逼的。某个软件卸载后残留一堆服务项开机自启还在跑某个驱动装错了版本设备管理器里躺着黄色感叹号某个运行库反复安装失败报错指向一个早已不存在的路径。这时候常规的“控制面板卸载”已经没用了只能上手清理注册表。但这里有个反直觉的结论绝大多数“强力卸载”工具翻车不是因为删不干净而是因为删太狠。注册表不是垃圾场它是Windows的神经中枢。一个CLSID被误删可能导致资源管理器崩溃一个服务键值被清掉可能让某个硬件驱动再也装不上。我见过最惨的案例是某开发者用某款“强力卸载”工具清理后系统更新直接卡死最后只能重装。所以这篇文章要讲的不是“怎么把注册表删光”而是怎么在可控范围内把该删的删掉、该留的留住。适合两类人一是被残留软件折磨、想自己动手的普通用户二是需要批量处理卸载残留的运维或桌面支持人员。核心思路就一条先定位、再备份、后删除、最后验证。2. 注册表里到底哪些键该删从卸载残留的四个藏身点说起2.1 卸载残留的四个典型位置Windows软件安装时注册表写入是分散的。卸载程序如果写得规范会自己清理写得烂的就留下“四件套”位置路径示例残留后果卸载入口HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{GUID}控制面板里还有条目点卸载报错服务/驱动HKLM\SYSTEM\CurrentControlSet\Services\xxx开机自启、服务无法删除文件关联HKCR\Applications\xxx.exe右键菜单、默认程序列表残留用户配置HKCU\Software\厂商名\软件名重装后配置被旧数据覆盖这四类里服务键和卸载入口键是必须清的文件关联和用户配置可以视情况保留。我一般会先打开注册表编辑器用“查找”功能搜软件名或厂商名但不会直接删——先导出备份。2.2 用PowerShell定位残留键的实操手动搜注册表太慢我习惯用PowerShell先扫一遍。下面这段脚本会列出所有包含指定关键词的注册表键不删任何东西只做侦察# 定义要搜索的关键词比如软件名或厂商名 $keyword ExampleSoft # 定义要扫描的注册表根路径 $roots ( HKLM:\SOFTWARE, HKLM:\SOFTWARE\WOW6432Node, HKCU:\SOFTWARE, HKLM:\SYSTEM\CurrentControlSet\Services ) # 遍历每个根路径递归查找匹配的键 foreach ($root in $roots) { if (Test-Path $root) { Get-ChildItem -Path $root -Recurse -ErrorAction SilentlyContinue | Where-Object { $_.Name -like *$keyword* } | Select-Object -ExpandProperty Name } }逻辑说明Get-ChildItem -Recurse会递归遍历子键-ErrorAction SilentlyContinue跳过无权限访问的键避免脚本中断。$keyword建议先用软件名如果结果太多再用厂商名缩小范围。参数说明$roots里我特意加了WOW6432Node因为64位系统上32位软件的注册表会被重定向到这里很多人只搜SOFTWARE会漏掉。Services键单独列出来是因为服务残留往往不包含软件名而是服务名需要单独确认。2.3 怎么判断一个键能不能删扫出来一堆键不是每个都能删。我的判断标准是三条第一看键值里有没有指向已删除文件的路径。如果ImagePath指向的exe已经不存在这个服务键就是死键可以删。第二看键的修改时间。如果某个键的最后写入时间是几年前而软件早就卸载了大概率是残留。第三看键的权限所有者。如果所有者是TrustedInstaller别动那是系统组件如果是Administrators或当前用户才考虑清理。提示删任何键之前右键导出为.reg文件命名带上日期和键名。后悔药就靠这个。3. 强力卸载工具怎么选三类方案的边界与翻车点3.1 三类卸载方案的对比市面上的“强力卸载”工具本质上分三类类型代表思路优点风险官方卸载程序软件自带uninstall.exe最安全厂商知道该删什么很多软件故意留残留第三方卸载工具扫描安装前后快照对比差异能发现隐藏残留快照不完整时会误删手动注册表清理自己定位、备份、删除完全可控费时容易漏或误删我一般推荐组合拳先用官方卸载程序走一遍再用第三方工具扫残留最后手动确认服务键和卸载入口键。不要一上来就手动删注册表那是最后一步。3.2 用安装快照对比法找残留第三方工具的核心原理是“安装前快照 vs 安装后快照”。自己也能做用PowerShell导出注册表快照# 导出指定根路径的注册表快照到文件 $snapshotPath C:\Temp\RegSnapshot_Before.reg $rootPath HKLM\SOFTWARE # 使用reg export命令导出/y表示覆盖已有文件 reg export $rootPath $snapshotPath /y # 安装软件后再导出一份After快照 # 然后用Beyond Compare或fc命令对比两个文件逻辑说明reg export是Windows自带命令比手动右键导出快得多。安装软件前跑一次安装后跑一次用文本对比工具看差异。差异部分就是软件写入的键。参数说明/y表示如果文件已存在直接覆盖不加会弹确认框。$rootPath可以换成HKCU\SOFTWARE或HKLM\SYSTEM但建议分多次导出避免单文件过大。3.3 卸载工具的三个翻车点翻车点一快照对比把系统正常变更也当成残留。比如安装软件时Windows自己更新了某个共享组件对比出来一堆差异全删就出事。解决办法是只看与软件名相关的差异。翻车点二工具自动删除时跳过备份。有些工具为了“干净”直接删不备份。我见过某工具删完注册表后Office激活失效。所以任何自动删除前必须确认工具有备份选项。翻车点三把“卸载入口”和“安装缓存”一起删。卸载入口键删了没问题但Installer目录下的缓存文件如果删了以后修复安装或卸载更新会报错。注册表里HKCR\Installer\Products下的键别乱动。4. 手动删注册表的完整流程从备份到验证的六步4.1 第一步创建系统还原点删注册表之前系统还原点是最后一道防线。命令行创建# 启用系统保护如果未启用 Enable-ComputerRestore -Drive C:\ # 创建还原点描述写清楚 Checkpoint-Computer -Description BeforeRegClean_ExampleSoft -RestorePointType MODIFY_SETTINGS逻辑说明Enable-ComputerRestore确保C盘系统保护开启Checkpoint-Computer创建还原点。描述里带上软件名和日期方便回滚时识别。参数说明-RestorePointType可选MODIFY_SETTINGS或APPLICATION_INSTALL一般用前者。注意系统还原点创建有频率限制默认24小时内只能创建一个如果刚创建过会跳过。4.2 第二步导出要删除的注册表键不要直接删先导出。在注册表编辑器里右键键 → 导出或者用命令# 导出单个键到reg文件 reg export HKLM\SYSTEM\CurrentControlSet\Services\ExampleService C:\Temp\ExampleService_Backup.reg /y逻辑说明reg export后面跟完整键路径导出的是该键及其所有子键和值。恢复时双击reg文件即可。参数说明路径里有空格必须加引号。/y同样表示覆盖。4.3 第三步删除服务键和卸载入口键确认备份后用命令删除# 删除服务键 reg delete HKLM\SYSTEM\CurrentControlSet\Services\ExampleService /f # 删除卸载入口键 reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{GUID} /f逻辑说明reg delete删除指定键及其子键/f表示强制删除不提示。服务键删除后需要重启才能彻底生效。参数说明{GUID}要替换成实际值可以在卸载入口键下逐个查看DisplayName确认。如果提示“拒绝访问”说明权限不够需要用psexec -s以SYSTEM权限运行或者用注册表编辑器修改权限。4.4 第四步清理文件关联和右键菜单文件关联残留主要在HKCR\Applications和HKCR\*\shell下。用PowerShell扫# 查找右键菜单中指向已删除exe的项 $shellKeys Get-ChildItem HKCR:\*\shell -ErrorAction SilentlyContinue foreach ($key in $shellKeys) { $cmd Get-ItemProperty -Path $key.PSPath -Name (default) -ErrorAction SilentlyContinue if ($cmd -and $cmd.(default) -like *ExampleSoft*) { Write-Output Found: $($key.Name) } }逻辑说明HKCR:\*\shell是所有文件类型的右键菜单遍历后检查默认值是否包含软件名。找到后先导出再删。参数说明HKCR在PowerShell里需要挂载为PSDrive如果没有先用New-PSDrive -Name HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT。4.5 第五步重启并验证删完注册表必须重启因为很多服务键在内存中有缓存。重启后检查控制面板 → 程序和功能看条目是否消失services.msc看服务是否还在事件查看器 → Windows日志 → 系统看有没有新的错误4.6 第六步回滚方案如果重启后系统异常回滚顺序双击之前导出的.reg文件合并回注册表如果reg文件没覆盖全用系统还原点如果还原点也没用进安全模式手动恢复注意reg文件合并时如果键已存在会覆盖不存在会创建。但删除的键如果包含权限设置reg文件恢复后权限可能不对需要手动检查。5. 避坑与排查删注册表最常见的五个翻车现场5.1 删完服务键后服务列表里还有残留现象services.msc里服务已经消失但sc query还能查到或者设备管理器里还有未知设备。原因服务键删了但服务的“实例”还在HKLM\SYSTEM\CurrentControlSet\Enum下或者驱动文件还在System32\drivers里。解决先确认服务名用sc delete 服务名再删一次。如果设备管理器有未知设备右键卸载设备勾选“删除驱动程序软件”。重启后再检查。5.2 卸载入口删了但控制面板里还有条目现象Uninstall键已经删除但控制面板刷新后条目还在。原因控制面板的列表有缓存或者条目在WOW6432Node下还有一份。解决检查HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall下是否有同名键。如果有一并删除。然后重启资源管理器或重启系统。5.3 删注册表后某个软件重装报错“已安装”现象明明卸载了重装时提示“检测到已安装版本请先卸载”。原因安装程序检测的是HKCR\Installer\Products下的产品键或者HKLM\SOFTWARE\Classes\Installer下的缓存。解决不要直接删Installer键而是用微软的msizap工具清理或者用官方卸载程序的“修复”功能。手动删Installer键风险极高可能导致其他软件也无法安装。5.4 删完注册表系统激活失效现象Windows或Office提示未激活。原因误删了HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform或 Office的激活相关键。解决如果有系统还原点回滚。如果没有Windows可以用slmgr /rearm重置激活状态后重新激活Office需要重新输入密钥。预防办法是删之前确认键的所有者不是TrustedInstaller。5.5 用第三方工具清理后开始菜单搜索变慢现象开始菜单搜索卡顿或者搜索不到已安装程序。原因第三方工具把HKCR\CLSID下的搜索相关组件键删了或者把HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Search下的配置清了。解决这种属于误删系统组件最快的方法是系统还原。如果还原点不可用只能从同版本系统导出对应键导入。所以再次强调任何自动清理工具必须先用虚拟机或测试机验证。6. 批量清理与自动化用脚本安全处理多台机器的残留6.1 批量清理的适用场景手动清理适合单机但如果你要给一个实验室的几十台机器清理同一款软件的残留手动就不现实了。这时候需要脚本化但脚本化的前提是你已经在一台机器上手动验证过清理清单。我一般会先在一台机器上手动走完流程把要删的键路径记录到一个文本文件里每行一个路径。然后写一个PowerShell脚本批量执行。6.2 批量删除脚本与安全校验# 定义要删除的键路径列表文件 $keyListFile C:\Temp\RegKeysToDelete.txt # 定义备份目录 $backupDir C:\Temp\RegBackup_$(Get-Date -Format yyyyMMdd_HHmmss) New-Item -ItemType Directory -Path $backupDir -Force | Out-Null # 读取每一行键路径 $keys Get-Content $keyListFile | Where-Object { $_ -and $_.Trim() -ne } foreach ($key in $keys) { $key $key.Trim() # 先检查键是否存在 if (Test-Path Registry::$key) { # 生成备份文件名把反斜杠替换成下划线 $safeName $key -replace [\\/:*?|], _ $backupFile Join-Path $backupDir $safeName.reg # 导出备份 reg export $key $backupFile /y | Out-Null # 删除键 reg delete $key /f | Out-Null Write-Output Deleted: $key (backup: $backupFile) } else { Write-Output Not found: $key } }逻辑说明脚本先创建带时间戳的备份目录然后逐行读取键路径。Test-Path Registry::$key检查键是否存在避免对不存在的键执行删除报错。备份文件名把路径里的非法字符替换成下划线保证文件名合法。参数说明$keyListFile每行一个完整键路径比如HKLM\SYSTEM\CurrentControlSet\Services\ExampleService。reg export和reg delete的路径参数不需要加Registry::前缀直接用标准注册表路径。6.3 验证脚本执行结果批量删除后用另一个脚本验证# 验证列表中的键是否已全部删除 $keys Get-Content $keyListFile | Where-Object { $_ -and $_.Trim() -ne } $remaining () foreach ($key in $keys) { $key $key.Trim() if (Test-Path Registry::$key) { $remaining $key } } if ($remaining.Count -eq 0) { Write-Output All keys deleted successfully. } else { Write-Output Remaining keys: $remaining | ForEach-Object { Write-Output $_ } }逻辑说明遍历同一个列表检查每个键是否还存在。如果全部删除输出成功如果有剩余列出来人工排查。参数说明这个脚本不执行删除只做检查可以反复运行。如果发现有剩余通常是权限问题需要以管理员身份重新运行删除脚本。6.4 一个我踩过的坑脚本里的路径大小写Windows注册表路径不区分大小写但PowerShell的Test-Path在某些版本上对大小写敏感。我遇到过列表里写HKLM\SYSTEM实际键是HKLM\SystemTest-Path返回false导致跳过删除。后来统一在脚本里加了一步先用Get-Item获取实际路径再操作。# 兼容大小写的检查方式 $actualKey Get-Item Registry::$key -ErrorAction SilentlyContinue if ($actualKey) { # 使用实际路径进行备份和删除 $realPath $actualKey.Name reg export $realPath $backupFile /y | Out-Null reg delete $realPath /f | Out-Null }这个细节很小但批量处理时能省很多排查时间。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

多区段光盘追加刻录后Windows不显示文件?详解会话与封盘机制与解决办法

多区段光盘追加刻录后Windows不显示文件?详解会话与封盘机制与解决办法

1. 问题解析:多区段光盘的“会话”机制,Windows为何会“失忆”1.1 从光盘刻录的物理结构说起:为什么光盘能“追加”数据先别急着找解决方案,把底层的区段(Session)结构弄清楚,后面所有操作都不会…

2026/10/13 3:45:55 阅读更多 →
三分钟把公众号内容同步进RSS阅读器:自托管部署完全指南

三分钟把公众号内容同步进RSS阅读器:自托管部署完全指南

你大概也体会过这种状态:公众号越关注越多,真正一篇文章不落读完的却没几个。订阅列表越来越长,红点数字越来越吓人,可打开之后翻两屏就关掉,想找几天前看过的那篇却怎么都捞不回来。我把这种状态忍了一年多&#xff0…

2026/10/13 3:45:55 阅读更多 →
Android弹幕引擎设计:Canvas直绘+事件代理架构实战

Android弹幕引擎设计:Canvas直绘+事件代理架构实战

1. 项目概述:为什么“Android弹幕”不再是简单滚动文字,而是一套可编程的视觉交互系统你有没有注意过,现在打开一个视频类App,哪怕只是看一段三分钟的教程,弹幕密度可能比字幕还高?但更值得琢磨的是——这些…

2026/10/13 3:45:55 阅读更多 →

最新新闻

西门子PLC实战:锂电浆料线程序开发与通讯调试全流程

西门子PLC实战:锂电浆料线程序开发与通讯调试全流程

很多人找我聊西门子PLC程序开发怎么入门,我一般不会直接甩教程,而是先反问一句:你见过新能源浆料线吗?去年我接手了一条锂电正极浆料产线的整套PLC程序开发,从需求梳理到带料调试,前后折腾了小半年。说句实…

2026/10/13 5:56:39 阅读更多 →
逻辑回归原理与实战:从线性回归到分类算法的完整指南

逻辑回归原理与实战:从线性回归到分类算法的完整指南

第一次接触逻辑回归的人,十有八九会被它的名字带偏——明明叫“回归”,翻开文档才发现它是个分类算法。我刚入行那年就踩过这个认知坑,一度以为它是用来预测房价的。后来在好几个分类项目里把它用熟了,才意识到这个“名字有歧义”…

2026/10/13 5:56:39 阅读更多 →
表格解析新思路:先看懂结构再生成答案,复杂表格不再答错

表格解析新思路:先看懂结构再生成答案,复杂表格不再答错

表格解析这个方向,做文档智能的人应该都不陌生。以前大家的习惯做法很简单:直接把一整张表格图像和问题一起丢给多模态模型,让它端到端输出答案。看着挺省事,但一落到真实场景——带合并单元格的财务报表、跨页的长规格书、行列爆…

2026/10/13 5:56:39 阅读更多 →
已完成研究,现在撰写文章

已完成研究,现在撰写文章

桌面应用 【免费下载链接】QOwnNotes QOwnNotes is a plain-text file notepad and todo-list manager with Markdown support and Nextcloud / ownCloud integration. 项目地址&#xff1a; https://gitcode.com/gh_mirrors/qo/QOwnNotes 点击查看 免费下载 <output_artic…

2026/10/13 5:56:39 阅读更多 →
快速去掉 Windows 与 Office 未激活水印:MAS 3.12 免费激活四步指南

快速去掉 Windows 与 Office 未激活水印:MAS 3.12 免费激活四步指南

快速去掉 Windows 与 Office 未激活水印&#xff1a;MAS 3.12 免费激活四步指南 【免费下载链接】Microsoft-Activation-Scripts Open-source Windows and Office activator featuring HWID, Ohook, TSforge, and Online KMS activation methods, along with advanced troubles…

2026/10/13 5:56:39 阅读更多 →
ZMK 电源管理行为实战:用 `ext_power` 控制外部电源(VCC)输出以节省电量

ZMK 电源管理行为实战:用 `ext_power` 控制外部电源(VCC)输出以节省电量

固件嵌入式智能硬件蓝牙 【免费下载链接】zmk ZMK Firmware Repository 项目地址&#xff1a; https://gitcode.com/gh_mirrors/zm/zmk 点击查看 免费下载 本文以 ZMK 固件仓库中的电源管理行为文档&#xff08;docs/docs/keymaps/behaviors/power.md&#xff09;为核心&#…

2026/10/13 5:55:39 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目&#xff0c;我最大的感受是&#xff0c;大部分坑不是出在技术前沿&#xff0c;而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节&#xff0c;最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了&#xff0c;很难不碰到舵机控制这道坎。做智能小车要转方向&#xff0c;做机械臂要抬关节&#xff0c;做云台要偏航俯仰&#xff0c;背后都是同一个东西在干活&#xff1a;舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”&#xff1f;——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台&#xff1f;或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜&#xff1f;又或者&#xff0c;在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介&#xff1a;基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码&#xff0c;面向计算机相关专业课程设计与期末大作业学生&#xff0c;以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程&#xff0c;…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程&#xff1a;键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化&#xff0c;十个新手有八个栽在"往输入框里填东西"这件事上&#xff1a;要么填不进去&#xff0c;要么填了一半&#xff0c;要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程&#xff1a;阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀&#xff1a;什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面&#xff0c;跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →