CMD变量用于注册表

时间:2017-01-20 22:54:17

标签: batch-file variables cmd

好吧,所以我试图删除注册表中的shell数据。我可以得到它并获得所有正确的信息,但我想为所有用户自动化它。我现在可以使用的那个只针对特定文件。

reg delete "HKEY_USERS\S-1-5-21-3793956547-500355711-2568367668-1002\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags" /f

我想要做的是跳过S-1-5-21的输入,并将其定位到HKEY_USERS中的所有键。这样我只需按一下按钮就可以删除所有shell数据。

我不确定是否有变量,或者我可能在这方向错误。任何意见都表示赞赏,我会尽力回答任何问题。

2 个答案:

答案 0 :(得分:1)

要枚举HKEY_USERS,您可以在For /f

中注册查询
@Echo off
Set "Hive=HKEY_USERS"
For /F "delims=" %%A in (
  'Reg Query "%Hive%" ^|findstr "%Hive%\S-1-5-21" '
) Do Echo %%A

将Echo替换为您要执行的任何cmd。

示例加扰输出:

> SO_41773670.cmd
HKEY_USERS\S-1-5-21-2140113576-3579786329-1990256020-1001
HKEY_USERS\S-1-5-21-2140113576-3579786329-1990256020-1001_Classes
HKEY_USERS\S-1-5-21-2140113576-3579786329-1990256020-1005
HKEY_USERS\S-1-5-21-2140113576-3579786329-1990256020-1006

答案 1 :(得分:0)

这样的事情可能非常适合您的需求,很可能取决于语言,并且我不推荐盲目自动删除注册表子项。

@Echo Off
For /F "EOL=E Delims=" %%A In ('Reg Query HKU /S /F Bags /K'
) Do Echo=Reg Delete "%%A" /F&&Echo=Reg Add "%%A"
Timeout -1

如果您对输出感到满意并希望继续,请删除Echo=和最后一行的两个实例。