RegistryCleanup.vbs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. On Error goto 0
  2. Const HKEY_LOCAL_MACHINE = &H80000002
  3. Const strObjRegistry = "winmgmts:\\.\root\default:StdRegProv"
  4. Function RegistryDeleteKeyRecursive(regRoot, strKeyPath)
  5. Set objRegistry = GetObject(strObjRegistry)
  6. objRegistry.EnumKey regRoot, strKeyPath, arrSubkeys
  7. If IsArray(arrSubkeys) Then
  8. For Each strSubkey In arrSubkeys
  9. RegistryDeleteKeyRecursive regRoot, strKeyPath & "\" & strSubkey
  10. Next
  11. End If
  12. objRegistry.DeleteKey regRoot, strKeyPath
  13. End Function
  14. Function RegistryListSubkeys(regRoot, strKeyPath)
  15. Set objRegistry = GetObject(strObjRegistry)
  16. objRegistry.EnumKey regRoot, strKeyPath, arrSubkeys
  17. RegistryListSubkeys = arrSubkeys
  18. End Function
  19. Function GetUserSID()
  20. Dim objWshNetwork, objUserAccount
  21. Set objWshNetwork = CreateObject("WScript.Network")
  22. Set objUserAccount = GetObject("winmgmts://" & objWshNetwork.UserDomain & "/root/cimv2").Get("Win32_UserAccount.Domain='" & objWshNetwork.ComputerName & "',Name='" & objWshNetwork.UserName & "'")
  23. GetUserSID = objUserAccount.SID
  24. End Function
  25. Function RegistryCleanupSyncRootManager()
  26. strSyncRootManagerKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\SyncRootManager"
  27. arrSubKeys = RegistryListSubkeys(HKEY_LOCAL_MACHINE, strSyncRootManagerKeyPath)
  28. If IsArray(arrSubkeys) Then
  29. arrSubkeys=Filter(arrSubkeys, Session.Property("APPNAME"))
  30. End If
  31. If IsArray(arrSubkeys) Then
  32. arrSubkeys=Filter(arrSubkeys, GetUserSID())
  33. End If
  34. If IsArray(arrSubkeys) Then
  35. For Each strSubkey In arrSubkeys
  36. RegistryDeleteKeyRecursive HKEY_LOCAL_MACHINE, strSyncRootManagerKeyPath & "\" & strSubkey
  37. Next
  38. End If
  39. End Function
  40. Function RegistryCleanup()
  41. RegistryCleanupSyncRootManager()
  42. End Function