Advertisement
Guest User

[BATCH] Java Runtime Nuker v1.3

a guest
Jul 15th, 2013
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. :: Purpose:       1. Nuke ALL versions of the Java Runtime, series 3 through 7, x86 and x64, and JavaFX
  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. :: Author:        vocatus on reddit.com/r/sysadmin and /r/usefulscripts
  7. ::                additional thanks to:
  8. ::                 - reddit.com/user/cannibalkitteh  : additional registry & file cleaning locations
  9. ::                 - reddit.com/user/sdjason         : optional JRE reinstall functionality
  10. ::                 - forums.oracle.com/people/mattmn : a lot of stuff from his Java removal script
  11. :: History:       1.3 + FEATURE:      Added variables to reinstall Java after cleanup (off by default) (sdjason)
  12. ::                    + FILE CLEANUP: Added C:\Users*\AppData\LocalLow\Sun\Java\jre* (cannibalkitteh)
  13. ::                    + FILE CLEANUP: Added C:\Users*\AppData\LocalLow\Sun\Java\AU   (cannibalkitteh)
  14. ::                1.2 + COMMENTS:     Improved a lot of commenting
  15. ::                    + UNINSTALLER:  Added WMIC wildcard-matching to catch all JRE GUIDs, including future revisions
  16. ::                    + FILE CLEANUP: Major overhaul,                                (mattm)
  17. ::                    + REGISTRY:     Added additional locations,                    (cannibalkitteh)
  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. ::                1.0   Initial write
  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. set LOGPATH=%SystemDrive%\Logs
  43. set LOGFILE=%COMPUTERNAME%_java_runtime_removal.log
  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. "%ProgramFiles(x86)%\Java\jre6\bin\jqs.exe" -disable>> "%LOGPATH%\%LOGFILE%"
  290. "%ProgramFiles(x86)%\Java\jre7\bin\jqs.exe" -disable>> "%LOGPATH%\%LOGFILE%"
  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. "%ProgramFiles%\Java\jre7\bin\jqs.exe" -unregister>> "%LOGPATH%\%LOGFILE%"
  297. msiexec.exe /x {4A03706F-666A-4037-7777-5F2748764D10} /qn /norestart
  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%   Purging Java installer cache...>> "%LOGPATH%\%LOGFILE%"
  316. echo %CUR_DATE% %TIME%   Purging Java installer cache...
  317. ver | find "XP"
  318. IF %ERRORLEVEL%==0 (
  319.     ::::::::::::::::
  320.     :: XP version ::
  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%
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement