Tested on Windows XP, Requires WScript and VBScript (which would be with most Windows OS)
$NtUninstall Folders contain the uninstall information required if you chose to remove a Windows Updated Component, I don't know anyone who needs to do this, and usually if you do, you would be required to remove it the second it's been installed because it should give you problems instantly. This script will only remove those that are present now, so if you do another Windows Update, you'll end up with newer folders so if you have problems with the new updates, least you have the option of going into Add/Remove to remove the new update. If you have no problems, you can re-use this script to remove them.
Save the script as RemoveWindowsUninstall.vbs in Notepad or any Text Editor of your choice (Not Word Processor Documents)
Option Explicit
Dim o, oShell, nConfirm
Set o = WScript.Application
o.Interactive = True
Set oShell = CreateObject("WScript.Shell")
nConfirm = oShell.Popup("Do you want to remove Windows Update Uninstall Files?", 0, "Remove Windows Update Uninstall Files", 4 + 32)
If nConfirm = 7 Then
o.Quit 0
End If
Dim oFSO, sWinDir, oFolder, oDictionary, oSubFolder, sFolderName, sFolderPath, sUpdateName, sDeleted
Set oFSO = CreateObject("Scripting.FileSystemObject")
sWinDir = oFSO.GetSpecialFolder(0)
sDeleted = vbNullString
Set oFolder = oFSO.GetFolder(sWinDir)
Set oDictionary = CreateObject("Scripting.Dictionary")
For Each oSubFolder In oFolder.SubFolders
sFolderName = LCase(oSubFolder.Name)
sFolderPath = LCase(oSubFolder.Path)
If Left(sFolderName, 12) = "$ntuninstall" And Mid(sFolderName, 13, 2) = "kb" Or Mid(sFolderName, 13, 2) = "q" Then
sUpdateName = Mid(sFolderName, 13, Len(sFolderName) - 13)
oDictionary.Add sUpdateName, sFolderPath
End If
Next
For Each sUpdateName in oDictionary.Keys
sDeleted = sDeleted & vbCrLF & sUpdateName
sFolderPath = oDictionary.Item(sUpdateName)
On Error Resume Next
oShell.RegDelete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" & sUpdateName & "\"
On Error Goto 0
oShell.Run "%ComSpec% /C RD /S /Q " & Chr(34) & sFolderPath & Chr(34), 0, True
Next
If Len(sDeleted) > 0 Then
MsgBox "The uninstall data for the following updates are now removed:" & vbCrLf & UCase(sDeleted), vbOKOnly + vbInformation, "Files Removed"
sDeleted = vbNullString
Else
MsgBox "No Windows Update Folders found for removal", vbOKOnly + vbInformation, "Nothing To Do"
End If
o.Quit 0Just run the program, and those pesky $NtUninstalls should be gone, I know there are other folders that could be removed too, but I'll look at doing that another time, the majority is made up of these $NtUninstalls.
I will be working on other scripts to remove Temporary Files, Cookies, Prefetch, Recent and any other nonsense I come across as I need to create a very basic clean up script that does all the tasks people usually need to do if they want to get some space back. So stay tune for that.
Cheers,
MC











