PCからJavaを根こそぎサイレント・アンインストールするスクリプト(グループポリシー対応)
2012年年末からのJavaの脆弱性ニュースによりJavaプラグインを無効化するようにとのお達しがありますが、全国に数百台あるPCに対していちいちそんなめんどくさい手順なんかやってられないですし、手順書を渡した所でユーザーがやってくれるとも限らないし、もうなんだかめんどくさいしJavaなんかオワコンだしJWSとかAppletとかしらねーしクライアントPCのJavaなんかいらないしとかなんとかいう訳で自動的にアンインストールする術を探していたら
http://web2.minasi.com/forum/topic.asp?TOPIC_ID=39459
こんなサイトを発見したので、丸パクリしつつ多少改変して作成した自動アンインストールするスクリプト(vbs)は以下の通り。
' 参考 http://web2.minasi.com/forum/topic.asp?TOPIC_ID=39459 'Javaを根こそぎアンインストール '制御ファイル兼ログファイルを作って1度だけ実行されるようにする strLogFileName = "C:\JavaUninstallLog_20130122.log" Set fso = CreateObject("Scripting.FileSystemObject") if fso.FileExists(strLogFileName) then '既に実行済みなら何もしない WScript.Quit end if 'WMI呼び出し Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") 'エラー出ても無視して続行するようにする '※objWMIService.ExecQueryでnullが返るとその後のFor Eachがエラーになるため(Nullチェックも効かない) On Error Resume Next 'ログファイルを作って開く Set ts = fso.CreateTextFile(strLogFileName) '以下アンインストール処理 ts.WriteLine "Java根こそぎアンインストール処理開始:" & Now 'Java 1.4系 Set colJava = objWMIService.ExecQuery("Select * from Win32_Product Where Name like 'Java 2 Runtime %'") For Each objSoftware in colJava ts.WriteLine objSoftware.Caption & " をアンインストールします" ts.WriteLine "アンインストール終了:" & objSoftware.Uninstall() Next 'Java 5系 Set colJava = objWMIService.ExecQuery("Select * from Win32_Product Where Name like 'J2SE Runtime Environment %'") For Each objSoftware in colJava ts.WriteLine objSoftware.Caption & " をアンインストールします" ts.WriteLine "アンインストール終了:" & objSoftware.Uninstall() Next 'Java 6系 update Set colJava = objWMIService.ExecQuery("Select * from Win32_Product Where Name like 'Java(TM) 6 %'") For Each objSoftware in colJava ts.WriteLine objSoftware.Caption & " をアンインストールします" ts.WriteLine "アンインストール終了:" & objSoftware.Uninstall() Next 'Java 7系 update Set colJava = objWMIService.ExecQuery("Select * from Win32_Product Where Name like 'Java(TM) 7 %'") For Each objSoftware in colJava ts.WriteLine objSoftware.Caption & " をアンインストールします" ts.WriteLine "アンインストール終了:" & objSoftware.Uninstall() Next 'Java 7 系 新しめの物 Set colJava = objWMIService.ExecQuery("Select * from Win32_Product Where Name like 'Java 7 %'") For Each objSoftware in colJava ts.WriteLine objSoftware.Caption & " をアンインストールします" ts.WriteLine "アンインストール終了:" & objSoftware.Uninstall() Next ts.WriteLine "Java根こそぎアンインストール処理終了:" & Now ts.Close() Set colJava = Nothing Set objWMIService = Nothing Set ts = Nothing Set fso = Nothing
スクリプト全体をコピって、JavaUninstall.vbsみたいな名前か何かで保存して実行すればよし。
バックグラウンドで自動的にすべてのJavaがアンインストールされます。
実行後はC:\直下のJavaUninstallLog_20130122.logにログが出ますので確認すればOK
インストールされているソフトの一覧を抽出してるので、スクリプトの実行は結構時間かかります。(5〜10分?)
で、AD環境で適応させたければグループポリシーでユーザーのログオンスクリプトにでも設定しておけばめでたくJavaが駆逐できます。
※Windows XP SP3環境で実行確認してますが、抽出条件ミスると必要なソフトまでアンインストールされかねないので、Your Own Riskでお願いします。
JDKも消したかったら「Java SE Development %」とあたりで抽出すればよいのではないかと。