我想在winpe环境下用reg load和reg unload命令离线删除HKEY_LOCAL_MACHINE\SYSTEM\ControlSetxxx\Enum\USBSTOR下的所有项,请帮我写一个批处理脚本实现
时间: 2023-07-21 08:45:56 浏览: 215
好的,以下是一个简单的批处理脚本,可以实现你的要求:
```
@echo off
setlocal enabledelayedexpansion
set regPath=HKLM\SYSTEM\ControlSet001\Enum\USBSTOR
set regKeyName=
reg load HKLM\offline C:\Windows\System32\config\SYSTEM
for /f "tokens=1,2*" %%a in ('reg query HKLM\offline\%regPath% ^| findstr /i /c:"HKEY_LOCAL_MACHINE"') do (
set regKeyName=%%c
reg delete HKLM\offline\%regKeyName% /f
)
reg unload HKLM\offline
```
你可以将脚本保存成名为 `delete_usbstor.bat` 的文件,然后在 winpe 环境下运行即可。注意,脚本中的 `regPath` 变量指定了要删除的注册表路径,如果你需要删除其他路径下的键值,请修改该变量的值。同时,脚本需要以管理员权限运行,否则可能无法成功删除注册表项。
相关问题
我想在winpe环境下离线用reg load和reg unload命令删除HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR下的所有项,请帮我写一个脚本实现
好的,以下是一个实现您需求的Shell脚本:
```bash
#!/bin/bash
# 注册表文件路径
reg_file="/mnt/usb/Windows/System32/config/SYSTEM"
# 将注册表文件加载到临时键
reg load HKLM\Temp "$reg_file"
# 删除 USBSTOR 项下的所有子项
reg delete HKLM\Temp\SYSTEM\CurrentControlSet\Enum\USBSTOR /f
# 卸载临时键
reg unload HKLM\Temp
```
请将 `reg_file` 变量修改为您当前的注册表文件路径,然后将脚本保存为 `.sh` 文件,将其放入到您的 WinPE 环境中,然后在命令行中执行即可。
上述在winpe环境离线删除注册表没发现CurrentControlSet选项,只有ControlSet1,ControlSet2怎么回事
在WinPE环境下,系统注册表数据存储在PE映像文件中的 \Windows\System32\Config 目录下,而不是在实际的系统分区中。而且,PE映像文件中只会加载一组 ControlSetXXX,而没有 CurrentControlSet。ControlSetXXX 子项中存储着系统启动时所需的驱动程序、服务和配置信息。因此,在 WinPE 环境下,你可以使用 ControlSet1 或 ControlSet2 来进行注册表操作,并且需要根据实际情况进行选择。
阅读全文