如何使用PowerShell批量删除注册表项
问题描述#
卸载了可牛压缩软件以后,发现右键菜单中仍然有可牛压缩的选项。不用想就知道是注册表中有该软件的残留。
打开注册表,进行搜索发现在计算机\HKEY_USERS\S-1-5-21-3610452307-4043425157-186669480-1001\Software\Classes
的子目录下有超过100+的关于可牛压缩的子项。
注册表编辑器还不支持按住Shift进行多选,所以只能使用脚本进行批量删除。
!!!友情提示,删除之前请进行注册表备份,或者你百分比确定你的代码没有问题,再执行,否则发生的任何损失,本文概不负责!!!
观察和该软件相关的项目名称,发现名称中均有计算机\HKEY_USERS\S-1-5-21-3610452307-4043425157-186669480-1001\Software\Classes\kzip_main.exe.*
这样的形式。有规律就好办了,下面我们开始介绍相关知识,并进行代码批量删除。
注册表路径以及如何获得注册表子项#
在PowerShell中注册表也有路径,跟我们文件和文件夹路径类似,上面的注册表项的路径可以表示为:
`REGISTRY::\HKEY_USERS\S-1-5-21-3610452307-4043425157-186669480-1001\Software\Classes``。
那我们如何获得该注册表路径下面的所有子项呢?使用Get-ChildItem命令(别名dir或者ls),代码如下:
$root = "REGISTRY::\HKEY_USERS\S-1-5-21-3610452307-4043425157-186669480-1001\Software\Classes\"
$items = (ls -Path $root)
第一行定义注册表路径,第二行得到该路径下的所有子项,结果为Array数组类型。
基于条件过滤删除项#
因为我们要删除的子项名称中都包含“kzip_main.exe”这样的字符,所以我们使用Where-Object命令(别名where或者?)进行条件过滤,代码如下:
$items = $items | ? {$_.PSPath -like "*kzip_main.exe*"}
其中,|为管道运算符,将操作符前面的结果传递到操作符后面的处理中。$_符号代表迭代过程中的每个变量,是$PSItem系统内置变量的别名。在这里即代表的是$items数组中的每个元素。
For循环删除子项#
通过?命令选择出来要删除的元素以后,我们可以使用ForEach_Object命令(别名foreach或者%)遍历该数组删除所有元素,代码如下:
$items | % {rm -Force -Recurse $_.PSPath}
其中,-Force和-Recurse参数代表强制删除和迭代删除子项。
最终代码#
总结起来,上面的代码可以写成如下一行:
(ls -Path "REGISTRY::\HKEY_USERS\S-1-5-21-3610452307-4043425157-186669480-1001\Software\Classes\") | ? {$_.PSPath -like "*kzip_main.exe*"} | % {rm -Force -Recurse $_.PSPath}
再强调一遍,注册表删除有风险,最好进行备份再进行操作!!!
————————————————
版权声明:本文为CSDN博主「卡尔曼和玻尔兹曼谁曼」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/theonegis/article/details/126526129
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
2021-12-04 Ubuntu 安装 Insomnia
2021-12-04 Ubuntu 安装 http-server
2021-12-04 Golang 中的反向代理(ReverseProxy) 介绍与使用
2021-12-04 git fetch 的作用与原理