View difference between Paste ID: XjyR8Ks8 and P6Lk4r4p
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%