注册表 - HKEY_USERS递归删除密钥(VBS)

时间:2013-12-09 16:55:17

标签: recursion vbscript registry profile

我想通过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*\\"  

1 个答案:

答案 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查询匹配系统上的所有用户配置文件,与正则表达式相同,其结果用于构建注册表路径。

从注册表中删除时请小心