好吧,所以我试图删除注册表中的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数据。
我不确定是否有变量,或者我可能在这方向错误。任何意见都表示赞赏,我会尽力回答任何问题。
答案 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=
和最后一行的两个实例。