MSCONFIG helper script!

If, like me, you build and repair PC all the time, you start to amass several "helper" files that make PC builds/repair easier. Well, one of these files that I've had for years is at the front of the list.

It's a script I found on the web that makes cleaning the MSCONFIG settings much easier.

Ever get someone's machine and they had a billion process firing up at startup? So you run MSCONFIG and turn them off. But the list can get extremely long, especially if the user downloads and installs everything they get their hands on!!

Well this script deletes the MSCONFIG entries that are disabled! So instead of a list as long as your arm, you get a list of only those processes that are selected to run. Nice and tidy.

Credit goes to Kelly's Corner!

Copy the follwing script and dump it into a text file. Rename it to "MSCcleaner.vbs" or whatever. Then just run it! Can't get any simpler than that!


Set oReg = GetObject("winmgmts:!root/default:StdRegProv")
Const HKLM = &H80000002
RegKeySUF = "SOFTWARE\Microsoft\Shared Tools\MSConfig\startupfolder"
RegKeySUR = "SOFTWARE\Microsoft\Shared Tools\MSConfig\startupreg"

ResultsSUF = EnumKey(HKLM, RegKeySUF, False)
If ResultsSUF = "" Then
  ResultsSUF = space(5) & "(none)"
  iBtns = 0
  iBtns = 4
  sDelPrompt = "Would you like to selectively delete any of these items?"
End If
sResults = "Disabled items in startupfolder key:" & vbcrlf & _
           ResultsSUF & vbcrlf & vbcrlf

ResultsSUR = EnumKey(HKLM, RegKeySUR, False)
If ResultsSUR = "" Then
  ResultsSUR = space(5) & "(none)"
  If iBtns <> 4 Then iBtns = 0
  iBtns = 4
  sDelPrompt = "Would you like to selectively delete any of these items?"
End If
sResults = sResults & "Disabled items in startupreg key:" & vbcrlf & _
           ResultsSUR & vbcrlf & vbcrlf

If MsgBox(sResults & sDelPrompt, iBtns + 256) <> 6 Then WScript.quit

EnumKey HKLM, RegKeySUF, True
EnumKey HKLM, RegKeySUR, True

Function EnumKey(Key, SubKey, bDelete)
 Dim Ret()
 oReg.EnumKey Key, SubKey, sKeys

  On Error Resume Next
 ReDim Ret(UBound(sKeys))
  If Err = 13 Then Exit Function
  On Error GoTo 0

 For Count = 0 to UBound(sKeys)
   If Not bDelete Then
     'this branch used on first call
    Ret(Count) = space(5) & sKeys(Count)
    'this branch used on deletion iteration
    If MsgBox("Do you want to delete " & sKeys(Count) & "?" & vbcrlf & _
              vbcrlf & "This operation cannot be undone!", 4 + 256) = 6 Then
        DeleteKey HKLM, SubKey & "\" & sKeys(Count)
    End If
   End If
 EnumKey = Join(Ret, vbcrlf)
End Function

Function DeleteKey(Key, SubKey)
 DeleteKey = oReg.DeleteKey(Key, SubKey)
End Function

Set ws = WScript.CreateObject("WScript.Shell")

On Error Resume Next

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.RegDelete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\MSConfig"

If Err.Number <> 0 then
MsgBox "You may need Administrator permissions to run this script" & vbcr & "or the registry entry does not exist.",4096,"Error!"
MsgBox "The registry entry has been removed.", 4096,"Done!"
End If
Set WshShell = Nothing