首页 > 系统相关 >如何使用PowerShell批量删除注册表项

如何使用PowerShell批量删除注册表项

时间:2022-12-04 12:24:25浏览次数:58  
标签:21 删除 批量 子项 Classes 注册表 PowerShell 1001

问题描述

卸载了可牛压缩软件以后,发现右键菜单中仍然有可牛压缩的选项。不用想就知道是注册表中有该软件的残留。

打开注册表,进行搜索发现在计算机\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

标签:21,删除,批量,子项,Classes,注册表,PowerShell,1001
From: https://www.cnblogs.com/FengZeng666/p/16949622.html

相关文章

  • 手写shell脚本批量修改文件名
    作为前端开发,还原设计稿的同时,还要经常导出素材。某次活动需求上线前需要替换素材30张,导出时文件名如图,上传cdn时,需要重命名。如果一张张手动重命名,麻烦又耗时。于是想到......
  • 西门子Wincc的归档数据批量导出
    目录1.LinkedServer1).登录SqlServerManagementStudio2).添加LinkedServer2.存储过程1).修改SQL脚本2).运行SQL脚本3).测试存储过程(a).存储过程说明......
  • linux批量运维工具ansible学习
    ansible学习centos7配置yum源mkdirbaklsmv*.repobak/wget-O/etc/yum.repos.d/CentOS-Base.repohttp://mirrors.aliyun.com/repo/Centos-7.repoyumclea......
  • 深度学习基础课:使用小批量随机梯度下降
    大家好~本课程为“深度学习基础班”的线上课程,带领同学从0开始学习全连接和卷积神经网络,进行数学推导,并且实现可以运行的Demo程序线上课程资料:本节课录像回放加QQ群,获得......
  • SQLServer中批量插入数据方式的性能对比
    昨天下午快下班的时候,无意中听到公司两位同事在探讨批量向数据库插入数据的性能优化问题,顿时来了兴趣,把自己的想法向两位同事说了一下,于是有了本文。公司技术背景:数......
  • ASP.NET 向SQLSERVER中批量插入数据
    usingSystem.Data;usingSystem.Diagnostics;usingSystem.Data.SqlClient;stringconnectionString="DataSource=HG-J3EJJ9LSW5PY;InitialCatalog=Test......
  • C#中数据的批量插入和更新_Asp.net
    对于海量数据的插入和更新,ADO.NET确实不如JDBC做到好,JDBC有统一的模型来进行批操作.使用起来非常方便: PreparedStatementps=conn.prepareStatement("insertorupd......
  • MXD文件版本批量转换
    ArcGIS不同版本的mxd文件不兼容,例如我这里本地使用的是10.1的版本,无法打开10.5版本创建的mxd文件。如果是较少的mxd文件,可以通过在10.5版本的arcgis中打开,选择FILE—SAVEA......
  • SpringBoot+ElasticSearch 实现模糊查询,批量CRUD,排序,分页,高亮!
    导入elasticsearch依赖创建高级客户端基本用法创建、判断存在、删除索引对文档的CRUD批量CRUD数据查询所有、模糊查询、分页查询、排序、高亮显示总结大致流程......
  • 使用post接口进行大批量导出文件
    在工作中,使用get方法导出文件会遇到一些问题:url长度限制,传入id量大且加载速度慢,所以抛弃以前的请求下载方式,使用post接口进行请求下载!  本次的导出文件为excel文件,其他......