SHOW:
|
|
- or go back to the newest paste.
| 1 | - | :: Purpose: Nuke ALL versions of the Java Runtime, series 3 through 7, x86 and x64, and JavaFX |
| 1 | + | :: Purpose: 1. Nuke ALL versions of the Java Runtime, series 3 through 7, x86 and x64, and JavaFX |
| 2 | - | :: Leaves Java Development Kit installations intact. Puts the lotion on its skin. |
| 2 | + | :: 2. Leaves Java Development Kit installations intact |
| 3 | :: 3. Reinstalls the latest JRE (if you want it to) | |
| 4 | :: 4. Puts the lotion on its skin. | |
| 5 | :: Requirements: local admin rights | |
| 6 | - | :: - reddit.com/user/cannibalkitteh for additional registry cleaning locations |
| 6 | + | |
| 7 | - | :: - forums.oracle.com/people/mattmn for a lot of stuff from his Java removal script |
| 7 | + | |
| 8 | - | :: History: 1.2 + Added a lot more comments, so you can see what's happening if you so desire |
| 8 | + | :: - reddit.com/user/cannibalkitteh : additional registry & file cleaning locations |
| 9 | - | :: + Major overhaul to WMIC uninstallation section: |
| 9 | + | :: - reddit.com/user/sdjason : optional JRE reinstall functionality |
| 10 | - | :: - Now wildcard-matches ALL JRE GUIDs, including future revisions to current products (3-7) |
| 10 | + | :: - forums.oracle.com/people/mattmn : a lot of stuff from his Java removal script |
| 11 | - | :: - Vastly improved WMIC wildcard matching precision |
| 11 | + | :: History: 1.3 + FEATURE: Added variables to reinstall Java after cleanup (off by default) (sdjason) |
| 12 | - | :: + Major overhaul to file and directory section, thanks to 'mattmn' on the Oracle forums |
| 12 | + | :: + FILE CLEANUP: Added C:\Users*\AppData\LocalLow\Sun\Java\jre* (cannibalkitteh) |
| 13 | - | :: + Added additional registry location cleaning, thanks to /u/cannibalkitteh for the suggestion |
| 13 | + | :: + FILE CLEANUP: Added C:\Users*\AppData\LocalLow\Sun\Java\AU (cannibalkitteh) |
| 14 | - | :: - HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall |
| 14 | + | :: 1.2 + COMMENTS: Improved a lot of commenting |
| 15 | - | :: - HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall |
| 15 | + | :: + UNINSTALLER: Added WMIC wildcard-matching to catch all JRE GUIDs, including future revisions |
| 16 | - | :: + Added Chrome to the list of browsers to kill before starting |
| 16 | + | :: + FILE CLEANUP: Major overhaul, (mattm) |
| 17 | - | :: * Logging improvements |
| 17 | + | :: + REGISTRY: Added additional locations, (cannibalkitteh) |
| 18 | - | :: / Switched all browser and Java kill lines to use /T flag (terminate child processes) |
| 18 | + | :: - HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall |
| 19 | :: - HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall | |
| 20 | :: + PREP: Added Chrome to the list of browsers to kill before starting | |
| 21 | :: + PREP: Added /T flag (terminate child processes) to all browser and Java kill lines | |
| 22 | :: * LOGGING: Minor improvements | |
| 23 | :: 1.1 + Massive overhaul of functionality and logging | |
| 24 | - | set VERSION=1.2 |
| 24 | + | |
| 25 | - | set UPDATED=2013-07-13 |
| 25 | + | |
| 26 | :: Prep | |
| 27 | @echo off | |
| 28 | set VERSION=1.3 | |
| 29 | set UPDATED=2013-07-15 | |
| 30 | ||
| 31 | ::::::::::::::: | |
| 32 | :: VARIABLES :: -- set these if you'd like | |
| 33 | ::::::::::::::: | |
| 34 | :: Rules for variables: | |
| 35 | :: * NO quotes! (bad: "c:\directory\path" ) | |
| 36 | :: * NO trailing slashes on the path! (bad: c:\directory\ ) | |
| 37 | :: * Spaces are okay (okay: c:\my folder\with spaces ) | |
| 38 | :: * Network paths are okay (okay: \\server\share name ) | |
| 39 | :: ( \\172.16.1.5\share name ) | |
| 40 | ||
| 41 | :: Log settings | |
| 42 | - | :: =============================================================================== :: |
| 42 | + | |
| 43 | - | :: Everything below this line is similar to a feral badger: Look, but Do Not Touch :: |
| 43 | + | |
| 44 | - | :: =============================================================================== :: |
| 44 | + | |
| 45 | ||
| 46 | :: Java re-install. Change to 'yes' if you want to reinstall Java after cleanup is done. | |
| 47 | :: If you do, make sure to set the location, file name and arguments below! | |
| 48 | set REINSTALL_JAVA=no | |
| 49 | ||
| 50 | :: The JRE installer must be in a place the script can find it (e.g. the same directory as the script) | |
| 51 | set JAVA_LOCATION=%~dp0 | |
| 52 | set JAVA_BINARY=jre-7u25-windows-x64.exe | |
| 53 | set JAVA_ARGUMENTS=/s /v"ADDLOCAL=ALL IEXPLORER=1 MOZILLA=1 JAVAUPDATE=0 REBOOT=suppress" /qn | |
| 54 | ||
| 55 | :: =================================================================================== :: | |
| 56 | :: Think of everything below this line like a feral badger: Look, but Do Not Touch :: | |
| 57 | :: =================================================================================== :: | |
| 58 | ||
| 59 | :: Create the log directory if it doesn't exist | |
| 60 | if not exist %LOGPATH% mkdir %LOGPATH% | |
| 61 | if exist "%LOGPATH%\%LOGFILE%" del "%LOGPATH%\%LOGFILE%" | |
| 62 | ||
| 63 | :: Get the date into a format we can use (ISO standard date format) | |
| 64 | set CUR_DATE=%DATE:~-4%-%DATE:~4,2%-%DATE:~7,2% | |
| 65 | ||
| 66 | ||
| 67 | :::::::::: | |
| 68 | :: PREP :: | |
| 69 | :::::::::: | |
| 70 | :: Log that we started | |
| 71 | echo. | |
| 72 | echo JAVA RUNTIME NUKER | |
| 73 | echo v%VERSION%, updated %UPDATED% | |
| 74 | echo. | |
| 75 | echo %CUR_DATE% %TIME% Beginning removal of Java Runtimes (series 3-7, x86 and x64) and JavaFX...>> "%LOGPATH%\%LOGFILE%" | |
| 76 | echo %CUR_DATE% %TIME% Beginning removal of Java Runtimes (series 3-7, x86 and x64) and JavaFX... | |
| 77 | ||
| 78 | :: Kill all browsers and running Java instances first | |
| 79 | echo %CUR_DATE% %TIME% Killing all running browsers and Java instances first...>> "%LOGPATH%\%LOGFILE%" | |
| 80 | echo %CUR_DATE% %TIME% Killing all running browsers and Java instances first... | |
| 81 | echo. | |
| 82 | taskkill /f /im java.exe /T >> "%LOGPATH%\%LOGFILE%" | |
| 83 | taskkill /f /im javaw.exe /T >> "%LOGPATH%\%LOGFILE%" | |
| 84 | taskkill /f /im javaws.exe /T >> "%LOGPATH%\%LOGFILE%" | |
| 85 | taskkill /f /im jqs.exe /T >> "%LOGPATH%\%LOGFILE%" | |
| 86 | taskkill /f /im jusched.exe /T >> "%LOGPATH%\%LOGFILE%" | |
| 87 | taskkill /f /im iexplore.exe /T >> "%LOGPATH%\%LOGFILE%" | |
| 88 | taskkill /f /im iexplorer.exe /T >> "%LOGPATH%\%LOGFILE%" | |
| 89 | taskkill /f /im firefox.exe /T >> "%LOGPATH%\%LOGFILE%" | |
| 90 | taskkill /f /im chrome.exe /T >> "%LOGPATH%\%LOGFILE%" | |
| 91 | echo. | |
| 92 | ||
| 93 | ||
| 94 | ::::::::::::::::::::::::: | |
| 95 | :: UNINSTALLER SECTION :: -- Basically here we just brute-force every "normal" method for | |
| 96 | ::::::::::::::::::::::::: removing Java, before resorting to more painstaking methods later | |
| 97 | ||
| 98 | echo %CUR_DATE% %TIME% Targeting individual JRE versions...>> "%LOGPATH%\%LOGFILE%" | |
| 99 | echo %CUR_DATE% %TIME% Targeting individual JRE versions... | |
| 100 | echo %CUR_DATE% %TIME% This might take a few minutes. Don't close this window. | |
| 101 | ||
| 102 | :: Okay, so all JRE runtimes (series 4-7) use product GUIDs, with certain numbers that increment with each new update (e.g. Update 25) | |
| 103 | :: This makes it easy to catch ALL of them through liberal use of WMIC wildcards ("_" is single character, "%" is any number of characters)
| |
| 104 | :: Additionally, JRE 6 introduced 64-bit runtimes, so in addition to the two-digit Update revision number (e.g. update 34), we also now | |
| 105 | :: check for the architecture type, which always equals '32' or '64'. First wildcard is the architecture, second is the revision/update number. | |
| 106 | ||
| 107 | :: JRE 7 | |
| 108 | echo %CUR_DATE% %TIME% JRE 7...>> "%LOGPATH%\%LOGFILE%" | |
| 109 | echo %CUR_DATE% %TIME% JRE 7... | |
| 110 | wmic product where "IdentifyingNumber like '{26A24AE4-039D-4CA4-87B4-2F8__170__FF}'" call uninstall /nointeractive >> "%LOGPATH%\%LOGFILE%"
| |
| 111 | ||
| 112 | :: JRE 6 | |
| 113 | echo %CUR_DATE% %TIME% JRE 6...>> "%LOGPATH%\%LOGFILE%" | |
| 114 | echo %CUR_DATE% %TIME% JRE 6... | |
| 115 | :: 1st line is for updates 23-xx, after 64-bit runtimes were introduced. | |
| 116 | :: 2nd line is for updates 1-22, before Oracle released 64-bit JRE 6 runtimes | |
| 117 | wmic product where "IdentifyingNumber like '{26A24AE4-039D-4CA4-87B4-2F8__160__FF}'" call uninstall /nointeractive>> "%LOGPATH%\%LOGFILE%"
| |
| 118 | wmic product where "IdentifyingNumber like '{3248F0A8-6813-11D6-A77B-00B0D0160__0}'" call uninstall /nointeractive>> "%LOGPATH%\%LOGFILE%"
| |
| 119 | ||
| 120 | :: JRE 5 | |
| 121 | echo %CUR_DATE% %TIME% JRE 5...>> "%LOGPATH%\%LOGFILE%" | |
| 122 | echo %CUR_DATE% %TIME% JRE 5... | |
| 123 | wmic product where "IdentifyingNumber like '{3248F0A8-6813-11D6-A77B-00B0D0150__0}'" call uninstall /nointeractive>> "%LOGPATH%\%LOGFILE%"
| |
| 124 | ||
| 125 | :: JRE 4 | |
| 126 | echo %CUR_DATE% %TIME% JRE 4...>> "%LOGPATH%\%LOGFILE%" | |
| 127 | echo %CUR_DATE% %TIME% JRE 4... | |
| 128 | wmic product where "IdentifyingNumber like '{7148F0A8-6813-11D6-A77B-00B0D0142__0}'" call uninstall /nointeractive>> "%LOGPATH%\%LOGFILE%"
| |
| 129 | ||
| 130 | :: JRE 3 | |
| 131 | echo %CUR_DATE% %TIME% JRE 3 (AKA Java 2 Runtime v1.3.xx)...>> "%LOGPATH%\%LOGFILE%" | |
| 132 | echo %CUR_DATE% %TIME% JRE 3 (AKA Java 2 Runtime v1.3.xx)... | |
| 133 | :: This version is so old we have to resort to a different method of removing it | |
| 134 | :: Java 2 Runtime Environment Standard Edition v1.3.1_25-00 | |
| 135 | %SystemRoot%\IsUninst.exe -f"%SystemDrive%\Program Files\JavaSoft\JRE\1.3.1_25\Uninst.isu" -a | |
| 136 | %SystemRoot%\IsUninst.exe -f"%SystemDrive%\Program Files\JavaSoft\JRE\1.3.1_24\Uninst.isu" -a | |
| 137 | %SystemRoot%\IsUninst.exe -f"%SystemDrive%\Program Files\JavaSoft\JRE\1.3.1_23\Uninst.isu" -a | |
| 138 | %SystemRoot%\IsUninst.exe -f"%SystemDrive%\Program Files\JavaSoft\JRE\1.3.1_22\Uninst.isu" -a | |
| 139 | %SystemRoot%\IsUninst.exe -f"%SystemDrive%\Program Files\JavaSoft\JRE\1.3.1_21\Uninst.isu" -a | |
| 140 | %SystemRoot%\IsUninst.exe -f"%SystemDrive%\Program Files\JavaSoft\JRE\1.3.1_20\Uninst.isu" -a | |
| 141 | %SystemRoot%\IsUninst.exe -f"%SystemDrive%\Program Files\JavaSoft\JRE\1.3.1_19\Uninst.isu" -a | |
| 142 | %SystemRoot%\IsUninst.exe -f"%SystemDrive%\Program Files\JavaSoft\JRE\1.3.1_18\Uninst.isu" -a | |
| 143 | %SystemRoot%\IsUninst.exe -f"%SystemDrive%\Program Files\JavaSoft\JRE\1.3.1_17\Uninst.isu" -a | |
| 144 | %SystemRoot%\IsUninst.exe -f"%SystemDrive%\Program Files\JavaSoft\JRE\1.3.1_16\Uninst.isu" -a | |
| 145 | %SystemRoot%\IsUninst.exe -f"%SystemDrive%\Program Files\JavaSoft\JRE\1.3.1_15\Uninst.isu" -a | |
| 146 | %SystemRoot%\IsUninst.exe -f"%SystemDrive%\Program Files\JavaSoft\JRE\1.3.1_14\Uninst.isu" -a | |
| 147 | %SystemRoot%\IsUninst.exe -f"%SystemDrive%\Program Files\JavaSoft\JRE\1.3.1_13\Uninst.isu" -a | |
| 148 | %SystemRoot%\IsUninst.exe -f"%SystemDrive%\Program Files\JavaSoft\JRE\1.3.1_12\Uninst.isu" -a | |
| 149 | %SystemRoot%\IsUninst.exe -f"%SystemDrive%\Program Files\JavaSoft\JRE\1.3.1_11\Uninst.isu" -a | |
| 150 | %SystemRoot%\IsUninst.exe -f"%SystemDrive%\Program Files\JavaSoft\JRE\1.3.1_10\Uninst.isu" -a | |
| 151 | %SystemRoot%\IsUninst.exe -f"%SystemDrive%\Program Files\JavaSoft\JRE\1.3.1_09\Uninst.isu" -a | |
| 152 | %SystemRoot%\IsUninst.exe -f"%SystemDrive%\Program Files\JavaSoft\JRE\1.3.1_08\Uninst.isu" -a | |
| 153 | %SystemRoot%\IsUninst.exe -f"%SystemDrive%\Program Files\JavaSoft\JRE\1.3.1_07\Uninst.isu" -a | |
| 154 | %SystemRoot%\IsUninst.exe -f"%SystemDrive%\Program Files\JavaSoft\JRE\1.3.1_06\Uninst.isu" -a | |
| 155 | %SystemRoot%\IsUninst.exe -f"%SystemDrive%\Program Files\JavaSoft\JRE\1.3.1_05\Uninst.isu" -a | |
| 156 | %SystemRoot%\IsUninst.exe -f"%SystemDrive%\Program Files\JavaSoft\JRE\1.3.1_04\Uninst.isu" -a | |
| 157 | %SystemRoot%\IsUninst.exe -f"%SystemDrive%\Program Files\JavaSoft\JRE\1.3.1_03\Uninst.isu" -a | |
| 158 | %SystemRoot%\IsUninst.exe -f"%SystemDrive%\Program Files\JavaSoft\JRE\1.3.1_02\Uninst.isu" -a | |
| 159 | %SystemRoot%\IsUninst.exe -f"%SystemDrive%\Program Files\JavaSoft\JRE\1.3.1_01\Uninst.isu" -a | |
| 160 | %SystemRoot%\IsUninst.exe -f"%SystemDrive%\Program Files\JavaSoft\JRE\1.3\Uninst.isu" -a | |
| 161 | ||
| 162 | ||
| 163 | :: Run wildcard uninstallers | |
| 164 | echo %CUR_DATE% %TIME% Now running WMIC wildcard catchall uninstallation...>> "%LOGPATH%\%LOGFILE%" | |
| 165 | echo %CUR_DATE% %TIME% Now running WMIC wildcard catchall uninstallation... | |
| 166 | wmic product where "name like '%%J2SE Runtime%%'" call uninstall /nointeractive>> "%LOGPATH%\%LOGFILE%" | |
| 167 | wmic product where "name like 'Java%%Runtime%%'" call uninstall /nointeractive>> "%LOGPATH%\%LOGFILE%" | |
| 168 | wmic product where "name like 'JavaFX%%'" call uninstall /nointeractive>> "%LOGPATH%\%LOGFILE%" | |
| 169 | ||
| 170 | echo %CUR_DATE% %TIME% Done.>> "%LOGPATH%\%LOGFILE%" | |
| 171 | echo %CUR_DATE% %TIME% Done. | |
| 172 | ||
| 173 | ||
| 174 | :::::::::::::::::::::: | |
| 175 | :: REGISTRY CLEANUP :: -- This is where it gets hairy. Don't read ahead if you have a weak constitution. | |
| 176 | :::::::::::::::::::::: | |
| 177 | echo %CUR_DATE% %TIME% Commencing registry cleanup...>> "%LOGPATH%\%LOGFILE%" | |
| 178 | echo %CUR_DATE% %TIME% Commencing registry cleanup... | |
| 179 | echo %CUR_DATE% %TIME% Searching for residual registry keys...>> "%LOGPATH%\%LOGFILE%" | |
| 180 | echo %CUR_DATE% %TIME% Searching for residual registry keys... | |
| 181 | ||
| 182 | :: Search MSIExec installer class hive for keys | |
| 183 | echo %CUR_DATE% %TIME% Looking in HKLM\software\classes\installer\products...>> "%LOGPATH%\%LOGFILE%" | |
| 184 | echo %CUR_DATE% %TIME% Looking in HKLM\software\classes\installer\products... | |
| 185 | reg query HKLM\software\classes\installer\products /f "J2SE Runtime" /s | find "HKEY_LOCAL_MACHINE" >> %TEMP%\java_purge_registry_keys.txt | |
| 186 | reg query HKLM\software\classes\installer\products /f "Java(TM) 6 Update" /s | find "HKEY_LOCAL_MACHINE" >> %TEMP%\java_purge_registry_keys.txt | |
| 187 | reg query HKLM\software\classes\installer\products /f "Java 7" /s | find "HKEY_LOCAL_MACHINE" >> %TEMP%\java_purge_registry_keys.txt | |
| 188 | reg query HKLM\software\classes\installer\products /f "Java*Runtime" /s | find "HKEY_LOCAL_MACHINE" >> %TEMP%\java_purge_registry_keys.txt | |
| 189 | ||
| 190 | :: Search the Add/Remove programs list (this helps with broken Java installations) | |
| 191 | echo %CUR_DATE% %TIME% Looking in HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall...>> "%LOGPATH%\%LOGFILE%" | |
| 192 | echo %CUR_DATE% %TIME% Looking in HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall... | |
| 193 | reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall /f "J2SE Runtime" /s | find "HKEY_LOCAL_MACHINE" >> %TEMP%\java_purge_registry_keys.txt | |
| 194 | reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall /f "Java(TM) 6 Update" /s | find "HKEY_LOCAL_MACHINE" >> %TEMP%\java_purge_registry_keys.txt | |
| 195 | reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall /f "Java 7" /s | find "HKEY_LOCAL_MACHINE" >> %TEMP%\java_purge_registry_keys.txt | |
| 196 | reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall /f "Java*Runtime" /s | find "HKEY_LOCAL_MACHINE" >> %TEMP%\java_purge_registry_keys.txt | |
| 197 | ||
| 198 | :: Search the Add/Remove programs list, x86/Wow64 node (this helps with broken Java installations) | |
| 199 | echo %CUR_DATE% %TIME% Looking in HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall...>> "%LOGPATH%\%LOGFILE%" | |
| 200 | echo %CUR_DATE% %TIME% Looking in HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall... | |
| 201 | reg query HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall /f "J2SE Runtime" /s | find "HKEY_LOCAL_MACHINE" >> %TEMP%\java_purge_registry_keys.txt | |
| 202 | reg query HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall /f "Java(TM) 6 Update" /s | find "HKEY_LOCAL_MACHINE" >> %TEMP%\java_purge_registry_keys.txt | |
| 203 | reg query HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall /f "Java 7" /s | find "HKEY_LOCAL_MACHINE" >> %TEMP%\java_purge_registry_keys.txt | |
| 204 | reg query HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall /f "Java*Runtime" /s | find "HKEY_LOCAL_MACHINE" >> %TEMP%\java_purge_registry_keys.txt | |
| 205 | ||
| 206 | ||
| 207 | :: List the leftover registry keys | |
| 208 | echo %CUR_DATE% %TIME% Found these keys...>> "%LOGPATH%\%LOGFILE%" | |
| 209 | echo %CUR_DATE% %TIME% Found these keys... | |
| 210 | echo.>> "%LOGPATH%\%LOGFILE%" | |
| 211 | echo. | |
| 212 | type %TEMP%\java_purge_registry_keys.txt>> "%LOGPATH%\%LOGFILE%" | |
| 213 | type %TEMP%\java_purge_registry_keys.txt | |
| 214 | echo.>> "%LOGPATH%\%LOGFILE%" | |
| 215 | echo. | |
| 216 | ||
| 217 | :: Backup the various registry keys that will get deleted (if they exist) | |
| 218 | :: We do this mainly because we're using wildcards, so we want a method to roll back if we accidentally nuke the wrong thing | |
| 219 | echo %CUR_DATE% %TIME% Backing up keys...>> "%LOGPATH%\%LOGFILE%" | |
| 220 | echo %CUR_DATE% %TIME% Backing up keys... | |
| 221 | if exist "%TEMP%\java_purge_registry_backup" rmdir /s /q "%TEMP%\java_purge_registry_backup" >NUL | |
| 222 | mkdir %TEMP%\java_purge_registry_backup >NUL | |
| 223 | :: This line walks through the file we generated and dumps each key to a file | |
| 224 | for /f "tokens=* delims= " %%a in (%TEMP%\java_purge_registry_keys.txt) do (reg query %%a) >> %TEMP%\java_purge_registry_backup\java_reg_keys_1.bak | |
| 225 | ||
| 226 | echo. | |
| 227 | echo %CUR_DATE% %TIME% Keys backed up to %TEMP%\java_purge_registry_backup\ >> "%LOGPATH%\%LOGFILE%" | |
| 228 | echo %CUR_DATE% %TIME% Keys backed up to %TEMP%\java_purge_registry_backup\ | |
| 229 | echo %CUR_DATE% %TIME% This directory will be deleted at next reboot, so get it now if you need it! >> "%LOGPATH%\%LOGFILE%" | |
| 230 | echo %CUR_DATE% %TIME% This directory will be deleted at next reboot, so get it now if you need it! | |
| 231 | ||
| 232 | :: Purge the keys | |
| 233 | echo %CUR_DATE% %TIME% Purging keys...>> "%LOGPATH%\%LOGFILE%" | |
| 234 | echo %CUR_DATE% %TIME% Purging keys... | |
| 235 | echo. | |
| 236 | :: This line walks through the file we generated and deletes each key listed | |
| 237 | for /f "tokens=* delims= " %%a in (%TEMP%\java_purge_registry_keys.txt) do reg delete %%a /va /f>> "%LOGPATH%\%LOGFILE%" | |
| 238 | ||
| 239 | :: These lines delete some specific Java locations | |
| 240 | :: ! These keys AREN'T backed up (as opposed to the ones above) because here we are specifically targeting known Java keys, whereas | |
| 241 | :: above we were nuking registry keys based on wildcard searches, so those need backups in case we nuke something we didn't want to. | |
| 242 | ||
| 243 | :: Delete keys for 32-bit Java installations on a 64-bit copy of Windows | |
| 244 | reg delete "HKLM\SOFTWARE\Wow6432Node\JavaSoft\Auto Update" /va /f>> "%LOGPATH%\%LOGFILE%" | |
| 245 | reg delete "HKLM\SOFTWARE\Wow6432Node\JavaSoft\Java Plug-in" /va /f>> "%LOGPATH%\%LOGFILE%" | |
| 246 | reg delete "HKLM\SOFTWARE\Wow6432Node\JavaSoft\Java Runtime Environment" /va /f>> "%LOGPATH%\%LOGFILE%" | |
| 247 | reg delete "HKLM\SOFTWARE\Wow6432Node\JavaSoft\Java Update" /va /f>> "%LOGPATH%\%LOGFILE%" | |
| 248 | reg delete "HKLM\SOFTWARE\Wow6432Node\JavaSoft\Java Web Start" /va /f>> "%LOGPATH%\%LOGFILE%" | |
| 249 | reg delete "HKLM\SOFTWARE\Wow6432Node\JreMetrics" /va /f>> "%LOGPATH%\%LOGFILE%" | |
| 250 | ||
| 251 | :: Delete keys for for 32-bit and 64-bit Java installations on matching Windows architecture | |
| 252 | reg delete "HKLM\SOFTWARE\JavaSoft\Auto Update" /va /f>> "%LOGPATH%\%LOGFILE%" | |
| 253 | reg delete "HKLM\SOFTWARE\JavaSoft\Java Plug-in" /va /f>> "%LOGPATH%\%LOGFILE%" | |
| 254 | reg delete "HKLM\SOFTWARE\JavaSoft\Java Runtime Environment" /va /f>> "%LOGPATH%\%LOGFILE%" | |
| 255 | reg delete "HKLM\SOFTWARE\JavaSoft\Java Update" /va /f>> "%LOGPATH%\%LOGFILE%" | |
| 256 | reg delete "HKLM\SOFTWARE\JavaSoft\Java Web Start" /va /f>> "%LOGPATH%\%LOGFILE%" | |
| 257 | reg delete "HKLM\SOFTWARE\JreMetrics" /va /f>> "%LOGPATH%\%LOGFILE%" | |
| 258 | ||
| 259 | ||
| 260 | echo. | |
| 261 | echo %CUR_DATE% %TIME% Keys purged.>> "%LOGPATH%\%LOGFILE%" | |
| 262 | echo %CUR_DATE% %TIME% Keys purged. | |
| 263 | echo %CUR_DATE% %TIME% Registry cleanup done.>> "%LOGPATH%\%LOGFILE%" | |
| 264 | echo %CUR_DATE% %TIME% Registry cleanup done. | |
| 265 | echo. | |
| 266 | ||
| 267 | :::::::::::::::::::::::::::::::: | |
| 268 | :: FILE AND DIRECTORY CLEANUP :: | |
| 269 | :::::::::::::::::::::::::::::::: | |
| 270 | echo %CUR_DATE% %TIME% Commencing file and directory cleanup...>> "%LOGPATH%\%LOGFILE%" | |
| 271 | echo %CUR_DATE% %TIME% Commencing file and directory cleanup... | |
| 272 | ||
| 273 | :: Kill accursed Java tasks in Task Scheduler | |
| 274 | echo %CUR_DATE% %TIME% Removing Java tasks from the Windows Task Scheduler...>> "%LOGPATH%\%LOGFILE%" | |
| 275 | echo %CUR_DATE% %TIME% Removing Java tasks from the Windows Task Scheduler... | |
| 276 | echo. | |
| 277 | del /F /Q %WINDIR%\tasks\Java*.job>> "%LOGPATH%\%LOGFILE%" | |
| 278 | del /F /Q %WINDIR%\System32\tasks\Java*.job>> "%LOGPATH%\%LOGFILE%" | |
| 279 | del /F /Q %WINDIR%\SysWOW64\tasks\Java*.job>> "%LOGPATH%\%LOGFILE%" | |
| 280 | echo. | |
| 281 | ||
| 282 | :: Kill the accursed Java Quickstarter and Updater | |
| 283 | echo %CUR_DATE% %TIME% De-registering and removing Java Quickstarter and Updater...>> "%LOGPATH%\%LOGFILE%" | |
| 284 | echo %CUR_DATE% %TIME% De-registering and removing Java Quickstarter and Updater... | |
| 285 | net stop JavaQuickStarterService>> "%LOGPATH%\%LOGFILE%" | |
| 286 | sc delete JavaQuickStarterService>> "%LOGPATH%\%LOGFILE%" | |
| 287 | net stop jusched>> "%LOGPATH%\%LOGFILE%" | |
| 288 | sc delete jusched>> "%LOGPATH%\%LOGFILE%" | |
| 289 | - | FOR /D /R "%ProgramFiles(x86)%\Java\" %%X IN (j2re*) DO RMDIR /S /Q "%%X">> "%LOGPATH%\%LOGFILE%" |
| 289 | + | |
| 290 | - | FOR /D /R "%ProgramFiles(x86)%\Java\" %%X IN (jre*) DO RMDIR /S /Q "%%X">> "%LOGPATH%\%LOGFILE%" |
| 290 | + | |
| 291 | "%ProgramFiles%\Java\jre6\bin\jqs.exe" -disable>> "%LOGPATH%\%LOGFILE%" | |
| 292 | "%ProgramFiles%\Java\jre7\bin\jqs.exe" -disable>> "%LOGPATH%\%LOGFILE%" | |
| 293 | "%ProgramFiles(x86)%\Java\jre6\bin\jqs.exe" -unregister>> "%LOGPATH%\%LOGFILE%" | |
| 294 | "%ProgramFiles(x86)%\Java\jre7\bin\jqs.exe" -unregister>> "%LOGPATH%\%LOGFILE%" | |
| 295 | "%ProgramFiles%\Java\jre6\bin\jqs.exe" -unregister>> "%LOGPATH%\%LOGFILE%" | |
| 296 | - | FOR /D /R "%ProgramFiles%\Java\" %%X IN (j2re*) DO RMDIR /S /Q "%%X">> "%LOGPATH%\%LOGFILE%" |
| 296 | + | |
| 297 | - | FOR /D /R "%ProgramFiles%\Java\" %%X IN (jre*) DO RMDIR /S /Q "%%X">> "%LOGPATH%\%LOGFILE%" |
| 297 | + | |
| 298 | echo. | |
| 299 | ||
| 300 | :: Nuke 32-bit Java installation directories | |
| 301 | echo %CUR_DATE% %TIME% Removing "%ProgramFiles(x86)%\Java\jre*" directories...>> "%LOGPATH%\%LOGFILE%" | |
| 302 | echo %CUR_DATE% %TIME% Removing "%ProgramFiles(x86)%\Java\jre*" directories... | |
| 303 | for /D /R "%ProgramFiles(x86)%\Java\" %%X in (j2re*) DO RMDIR /S /Q "%%X">> "%LOGPATH%\%LOGFILE%" | |
| 304 | for /D /R "%ProgramFiles(x86)%\Java\" %%X in (jre*) DO RMDIR /S /Q "%%X">> "%LOGPATH%\%LOGFILE%" | |
| 305 | rmdir /S /Q "%ProgramFiles(x86)%\JavaSoft\JRE">> "%LOGPATH%\%LOGFILE%" | |
| 306 | ||
| 307 | :: Nuke 64-bit Java installation directories | |
| 308 | echo %CUR_DATE% %TIME% Removing "%ProgramFiles%\Java\jre*" directories...>> "%LOGPATH%\%LOGFILE%" | |
| 309 | echo %CUR_DATE% %TIME% Removing "%ProgramFiles%\Java\jre*" directories... | |
| 310 | for /D /R "%ProgramFiles%\Java\" %%X in (j2re*) DO RMDIR /S /Q "%%X">> "%LOGPATH%\%LOGFILE%" | |
| 311 | for /D /R "%ProgramFiles%\Java\" %%X in (jre*) DO RMDIR /S /Q "%%X">> "%LOGPATH%\%LOGFILE%" | |
| 312 | rmdir /S /Q "%ProgramFiles%\JavaSoft\JRE">> "%LOGPATH%\%LOGFILE%" | |
| 313 | ||
| 314 | :: Nuke Java installer cache ( thanks to reddit.com/user/cannibalkitteh ) | |
| 315 | - | echo %CUR_DATE% %TIME% Registry hive backups: %TEMP%\java_purge_registry_backup\>> "%LOGPATH%\%LOGFILE%" |
| 315 | + | echo %CUR_DATE% %TIME% Purging Java installer cache...>> "%LOGPATH%\%LOGFILE%" |
| 316 | - | echo %CUR_DATE% %TIME% Registry hive backups: %TEMP%\java_purge_registry_backup\ |
| 316 | + | echo %CUR_DATE% %TIME% Purging Java installer cache... |
| 317 | - | echo %CUR_DATE% %TIME% Log file: "%LOGPATH%\%LOGFILE%">> "%LOGPATH%\%LOGFILE%" |
| 317 | + | ver | find "XP" |
| 318 | - | echo %CUR_DATE% %TIME% Log file: "%LOGPATH%\%LOGFILE%" |
| 318 | + | IF %ERRORLEVEL%==0 ( |
| 319 | :::::::::::::::: | |
| 320 | - | :: Return exit code to SCCM/PDQ Deploy/Psexec/etc |
| 320 | + | :: XP version :: |
| 321 | - | pause |
| 321 | + | :::::::::::::::: |
| 322 | :: Get list of users, put it in a file, then use it to iterate through each users profile, deleting the AU folder | |
| 323 | dir "%SystemDrive%\Documents and Settings\" /B > %TEMP%\userlist.txt | |
| 324 | for /f "tokens=* delims= " %%a in (%TEMP%\userlist.txt) DO RMDIR /S /Q "%SystemDrive%\Users\%%a\AppData\LocalLow\Sun\Java\AU">> "%LOGPATH%\%LOGFILE%" | |
| 325 | for /D /R "%SystemDrive%\Documents and Settings\" %%X in (jre*) DO RMDIR /S /Q "%%X">> "%LOGPATH%\%LOGFILE%" | |
| 326 | ) ELSE ( | |
| 327 | :::::::::::::::::::::::::: | |
| 328 | :: Vista and up version :: | |
| 329 | :::::::::::::::::::::::::: | |
| 330 | :: Get list of users, put it in a file, then use it to iterate through each users profile, deleting the AU folder | |
| 331 | dir %SystemDrive%\Users /B > %TEMP%\userlist.txt | |
| 332 | for /f "tokens=* delims= " %%a in (%TEMP%\userlist.txt) DO RMDIR /S /Q "%SystemDrive%\Users\%%a\AppData\LocalLow\Sun\Java\AU">> "%LOGPATH%\%LOGFILE%" | |
| 333 | :: Get the other JRE directories | |
| 334 | for /D /R "%SystemDrive%\Users" %%X in (jre*) DO RMDIR /S /Q "%%X">> "%LOGPATH%\%LOGFILE%" | |
| 335 | ) | |
| 336 | ||
| 337 | :: Miscellaneous stuff, sometimes left over by the installers | |
| 338 | echo %CUR_DATE% %TIME% Searching for and purging other Java Runtime-related directories...>> "%LOGPATH%\%LOGFILE%" | |
| 339 | echo %CUR_DATE% %TIME% Searching for and purging other Java Runtime-related directories... | |
| 340 | echo. | |
| 341 | del /F /Q %SystemDrive%\1033.mst>> "%LOGPATH%\%LOGFILE%" | |
| 342 | del /F /S /Q "%SystemDrive%\J2SE Runtime Environment*">> "%LOGPATH%\%LOGFILE%" | |
| 343 | echo. | |
| 344 | ||
| 345 | echo %CUR_DATE% %TIME% File and directory cleanup done.>> "%LOGPATH%\%LOGFILE%" | |
| 346 | echo %CUR_DATE% %TIME% File and directory cleanup done. | |
| 347 | echo. >> "%LOGPATH%\%LOGFILE%" | |
| 348 | echo. | |
| 349 | ||
| 350 | :: Check if we wanted to install a new version of the JRE. If we didn't, then go ahead and exit. | |
| 351 | IF '%REINSTALL_JAVA%'=='yes' ( | |
| 352 | echo %CUR_DATE% %TIME% ! Variable "REINSTALL_JAVA" was set to 'yes'. Now installing %JAVA_BINARY%...>> "%LOGPATH%\%LOGFILE%" | |
| 353 | echo %CUR_DATE% %TIME% ! Variable "REINSTALL_JAVA" was set to 'yes'. Now installing %JAVA_BINARY%... | |
| 354 | "%JAVA_LOCATION%\%JAVA_BINARY%" %JAVA_ARGUMENTS% | |
| 355 | java -version | |
| 356 | echo Done.>> "%LOGPATH%\%LOGFILE%" | |
| 357 | ) | |
| 358 | ||
| 359 | :: Done. | |
| 360 | echo %CUR_DATE% %TIME% Registry hive backups: %TEMP%\java_purge_registry_backup\>> "%LOGPATH%\%LOGFILE%" | |
| 361 | echo %CUR_DATE% %TIME% Registry hive backups: %TEMP%\java_purge_registry_backup\ | |
| 362 | echo %CUR_DATE% %TIME% Log file: "%LOGPATH%\%LOGFILE%">> "%LOGPATH%\%LOGFILE%" | |
| 363 | echo %CUR_DATE% %TIME% Log file: "%LOGPATH%\%LOGFILE%" | |
| 364 | echo %CUR_DATE% %TIME% JAVA NUKER COMPLETE. Recommend rebooting and washing your hands.>> "%LOGPATH%\%LOGFILE%" | |
| 365 | echo %CUR_DATE% %TIME% JAVA NUKER COMPLETE. Recommend rebooting and washing your hands. | |
| 366 | ||
| 367 | :: Return exit code to SCCM/PDQ Deploy/PSexec/etc | |
| 368 | exit /B %EXIT_CODE% |