Skip navigation

JSI Tip 8346. How do I blow away service pack and hotfix uninstall registry entries AND folders?

My systems always seem to have excess service pack and hotfix uninstall folders, and registry entries, mostly from my participation in the betas.

Prior to installing a new service pack release, I use DelHotFix.bat to delete all previous service pack and hotfix uninstall folders, and the Control Panel / Add or Remove Programs registry entries.

NOTE: I am NOT recommending that you do this, but you could run the DelHotFix.bat in display mode.

The syntax for using DelHotFix.bat is:

DelHotFix \[/D\]

Where /D is an optional switch that causes the folder and registry key deletion.

DelHotFix.bat contains:

@echo off
setlocal
@echo DelHotFix \[/D\]
set sw=%1
set key=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
set blank= 
set fnd=findstr /L /I
for /f "Tokens=*" %%a in ('reg query %key% ^|%fnd% /C:"\Uninstall\KB"') do (
 set UK=%%a
 call :parse
)
for /f "Tokens=*" %%a in ('reg query %key% ^|%fnd% /C:"\Uninstall\Q0"') do (
 set UK=%%a
 call :parse
)
for /f "Tokens=*" %%a in ('reg query %key% ^|%fnd% /C:"\Uninstall\Q8"') do (
 set UK=%%a
 call :parse
)
set key="HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Windows 2000 Service Pack"
call :SP
set key="HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Windows XP Service Pack"
call :SP
set key="HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Windows Server 2003 Service Pack"
call :SP
if /i "%sw%" NEQ "/D" dir /b /a /ad "%SystemRoot%\$NT*"
if /i "%sw%" NEQ "/D" goto finish
for /f "Tokens=*" %%d in ('dir /b /a /ad "%SystemRoot%\$NT*"') do (
 @echo Deleting "%SystemRoot%\%%d"
 rd /s /q "%SystemRoot%\%%d"
)
:finish
endlocal
goto :EOF
:parse
set UK=HKLM%UK:~18%
for /f "Tokens=2*" %%b in ('reg Query "%UK%" /v DisplayName') do (
 set name=%%c
)
if /i "%sw%" NEQ "/D" @echo %UK% %blank% %blank% %name%
if /i "%sw%" NEQ "/D" goto :EOF
@echo REG DELETE %UK% /F
REG DELETE %UK% /F
@echogoto :EOF
:SP
set OK=N
call :SPX>nul 2>&1
if "%OK%" EQU "N" goto :EOF
if /i "%sw%" NEQ "/D" @echo %key%&goto :EOF
set UK=%key%
@echo REG DELETE %UK% /F
REG DELETE %UK% /F
@echogoto :EOF
:SPX
for /f "Tokens=*" %%a in ('reg query %key%') do (
 set OK=Y
)



Hide comments

Comments

  • Allowed HTML tags: <em> <strong> <blockquote> <br> <p>

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
Publish