UWSCで Malwarebytes AdwCleaner を自動応答
Malwarebytes の AdwCleanerを試しに使ったところ予想外に良かった
これを実行すればAdwCleanerがスタートして、スキャンの結果応じてクリーニングを実行してくれるようになる
クリーニング後は手動で再起動を選ぶようにしている
これを定期的に勝手に自動実行できればと思い、UWSCをお勉強して自動応答のスクリプトを書いてみたのでメモしておきます
スクリプトを書いたときはadwcleanerのバージョンは7.2.1であったが、バージョンが 7 ならばソースの変更は不要と思われる
バージョンが 8になったらウインドウ名を変更してやる必要がある
自動応答できるソフトをあれこれ調べてみるとUWSCがインストール不要で、実行ファイルをパソコンに配布するだけで実行できるのがありがたい。ただ、作者との連絡が取れ無い状態とのことで今後のバージョンアップや不具合対応は期待できないのが残念。
//マルウェア駆除ツール(Malwarebytes AdwCleaner)の自動実行 EXEC("C:\○○○○\adwcleaner_7.2.1.exe") cnt = 0 for i = 1 to 15 //◆メイン画面 ID = GETID("Malwarebytes AdwCleaner 7") if ID <> -1 then //◆今すぐスキャン (2回目は終了) if chkbtn(ID,"今すぐスキャン") <> -1 then if cnt = 0 then clkitem(ID,"今すぐスキャン",CLK_BTN) cnt = cnt + 1 sleep(10) else CtrlWin(ID,CLOSE) break endif endif //◆同意する画面 if chkbtn(ID,"同意する") <> -1 then clkitem(ID,"同意する",CLK_BTN) endif //◆マルウェアが見つからなかった場合 if chkbtn(ID,"ベーシック リペアをスキップ") <> -1 then clkitem(ID,"ベーシック リペアをスキップ",CLK_BTN) //sleep(1) endif //◆マルウェアが見つかった場合 if chkbtn(ID,"クリーニング リペア") <> -1 then clkitem(ID,"クリーニング リペア",CLK_BTN) //sleep(1) endif endif //◆評価画面 ID = GETID("adwcleaner_7") if ID <> -1 then CtrlWin(ID,CLOSE) endif //◆クリーニング後の指定 ID = GETID("Malwarebytes AdwCleaner") if ID <> -1 then if chkbtn(ID,"クリーニング後手動で再起動") <> -1 then clkitem(ID,"クリーニング後手動で再起動",CLK_BTN) endif endif //◆1秒待ってループ sleep(1) next //■ボタン名取得(デバック用) // NUM = GETITEM(ID,ITM_BTN) // FOR A = 0 TO (NUM-1) // //PRINT (A+1) + "番目: " + ALL_ITEM_LIST[A] // NEXT //■ウインド名取得(デバッグ用) //n = GETALLWIN() //PRINT "◆ウィンドウの数:" + n //IFB n > 0 // FOR i = 0 TO (n - 1) // PRINT ALL_WIN_ID[i] + ":" + STATUS(ALL_WIN_ID[i], ST_TITLE) // NEXT //ENDIF
ちなみに実行する際は、UWSCをvbscriptからバッチ形式で実行している
管理者モードにしているのは念のため
'******************************************************************** '* adwcleaner auto run '******************************************************************** Option Explicit On Error Resume Next '■管理者モードに設定 Dim WMI, OS, Value, Shell do while WScript.Arguments.Count = 0 and WScript.Version >= 5.7 Set WMI = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2") Set OS = WMI.ExecQuery("SELECT *FROM Win32_OperatingSystem") For Each Value in OS if left(Value.Version, 3) < 6.0 then exit do Next Set Shell = CreateObject("Shell.Application") Shell.ShellExecute "wscript.exe", """" & WScript.ScriptFullName & """ uac", "", "runas" WScript.Quit loop '■UWSCを実行 Dim objWshShell ' WshShell オブジェクト Set objWshShell = WScript.CreateObject("WScript.Shell") objWshShell.Run("""C:\○○○○\UWSC.exe"" ""\\landisk\○○○○\adwcleaner_auto.uws""") WScript.Quit