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