' Clear Win7/Win2008 User Profile and registry
' to be executed on each Terminal Server
'(c)2012-2014 sorinakis@gmail
Set WshShell = CreateObject("WScript.Shell")
Set WshNet = WScript.CreateObject("WScript.Network")
Set WMIService = GetObject("winmgmts:\\.\root\cimv2")
Set objRegistry = GetObject("winmgmts:\\.\root\default:StdRegProv")
set WshFSO = CreateObject("Scripting.FileSystemObject")
const HKEY_LOCAL_MACHINE = &H80000002
dim strUser
Do
strUser = InputBox(vbCrLf & "Please enter the username you wish to reset: ", "Profile Cleaner")
If TypeName(strUser) = "Empty" Then
WScript.Quit
End If
If Len(Trim(strUser)) = 0 Then
MsgBox "You have to Enter Username To Reset",48
End If
Loop While Len(Trim(strUser)) = 0
'' debug
'with createobject("wscript.shell")
'.popup "User: " & strUser , 5 , "Info"
'end with
'' end debug
if CStr(CheckUser(strUser)) then
Set Account = WMIService.Get("Win32_UserAccount.Name='" & strUser & "',Domain='" & WshNet.UserDomain & "'")
strRegKey = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\" + Account.SID
if CheckRegKey(strRegKey) then
strUserProfile = WshShell.ExpandEnvironmentStrings(WshShell.RegRead("HKEY_LOCAL_MACHINE\" + strRegKey + "\ProfileImagePath"))
strRmtFldr = WshShell.ExpandEnvironmentStrings(WshShell.RegRead("HKEY_LOCAL_MACHINE\" + strRegKey + "\CentralProfile"))
Else
MsgBox " The registry key for user " & strUser & " does not exist! Can NOT backup and clean anything!" & vbCrLf & vbCrLf & "Please manually check for and rename the USERPROFILE and ROAMINGPROFILE Folders.",16
wscript.quit
End If
strRegFile = strUserProfile & "\reg_backup.reg"
regCmd = "regedit.exe /E """ & strRegFile & """ " & """HKEY_LOCAL_MACHINE\" & strregKey & """"
If WshFSO.FolderExists (strUserProfile) Then
'' debug
'with createobject("wscript.shell")
'.popup "Backup: " & strUserProfile , 5 , "Info"
'end with
'' end debug
WshShell.Run regCmd, 0, True
WshFSO.MoveFolder strUserProfile , strUserProfile & ".backup"
End If
If WshFSO.FolderExists (strRmtFldr) Then
'' debug
'with createobject("wscript.shell")
'.popup "Backup: " & strRmtFldr , 5 , "Info"
'end with
'' end debug
WshFSO.MoveFolder strRmtFldr , strRmtFldr & ".backup"
End If
'' debug
'with createobject("wscript.shell")
'.popup "Removing: HKEY_LOCAL_MACHINE\" & strRegKey , 5 , "Info"
'end with
'' end debug
DeleteSubkeys HKEY_LOCAL_MACHINE, strRegKey
Sub DeleteSubkeys(HKEY_LOCAL_MACHINE, strRegKey)
objRegistry.EnumKey HKEY_LOCAL_MACHINE, strRegKey, arrSubkeys
If IsArray(arrSubkeys) Then
For Each strSubkey In arrSubkeys
DeleteSubkeys HKEY_LOCAL_MACHINE, strRegKey & "\" & strSubkey
Next
End If
objRegistry.DeleteKey HKEY_LOCAL_MACHINE, strRegKey
End Sub
' Open the backed up profile it in explorer...
'strPath = "explorer.exe /e, strRmtFldr" & ".backup"
'WshShell.Run strPath
'debug
with createobject("wscript.shell")
.popup "Profile of " & strUser & " has been processed.", 5 , "Info"
end with
'' end debug
wscript.quit
Else
MsgBox "USER " & strUser & " NOT FOUND!", 16
wscript.quit
End If
Function CheckRegKey(strRegKey)
On Error Resume next
strUserProfile = WshShell.ExpandEnvironmentStrings(WshShell.RegRead("HKEY_LOCAL_MACHINE\" + strRegKey + "\ProfileImagePath"))
If Err.Number <> 0 Then
Err.Clear
CheckRegKey = false
else
Err.Clear
CheckRegKey = true
End If
end function
Function CheckUser(user)
On Error Resume next
with CreateObject("WScript.Shell")
Set Account = WMIService.Get("Win32_UserAccount.Name='" & User & "',Domain='" & WshNet.UserDomain & "'")
end with
CheckUser = (Err.Number = 0)
On Error Goto 0
end function
In the void is virtue, and no evil. Wisdom has existence, principle has existence, The Way has existence, spirit is nothingness.
No comments:
Post a Comment