我想通过User Profiles / HKEY_USERS位置递归删除以下值。这是我到目前为止所得到的。但是我无法让脚本删除“strKeyPath”变量下的值。我已经删除了之前所做的事情,因为它非常错误。
Const HKEY_CURRENT_USER = &H80000001
Const HKEY_LOCAL_MACHINE = &H80000002
Const HKEY_USERS = &H80000003
'Set the local computer as the target
strComputer = "."
'set the objRegistry Object
Set objRegistry = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
'Enumerate All subkeys in HKEY_USERS
objRegistry.EnumKey HKEY_USERS, "", arrSubkeys
'Define variables
strKeyPath = "\Software\Microsoft\Windows\CurrentVersion\Uninstall\50cc940dd0f54608"
strSID = "S-1-5-21-\d*-\d*-\d*-\d*\\"
答案 0 :(得分:2)
你想要实现的并不是真正的“递归”,你只是从许多不同的地方删除一个注册表项。我就是这样做的:
Option Explicit
Const HKU = &H80000003
Dim wmi, reg
Dim prof, profs
Dim key
Set wmi = GetObject("winmgmts:\\.\root\cimv2")
Set reg = GetObject("winmgmts:\\.\root\default:StdRegProv")
Set profs = wmi.ExecQuery("Select SID from Win32_UserProfile where SID like 'S-1-5-21%'")
For Each prof In profs
key = prof.SID & "\Software\Microsoft\Windows\CurrentVersion\Uninstall\50cc940dd0f54608"
WScript.Echo key
'Call reg.DeleteKey(HKU, key) 'commented out for safety
Next
WMI查询匹配系统上的所有用户配置文件,与正则表达式相同,其结果用于构建注册表路径。
从注册表中删除时请小心