TaskSwitchXP Alt+Tabでのタスク切り替え
Alt+Tabによるタスク切り替え動作を拡張するアプリケーションです。
同様のアプリケーションににMicrosoft PowerToys for Windows XPのTask Switcherというものがあります。
しばらく前から、このTask Switcherを使っていたのですが、少し動作が重たい気がするのと、Alt+Tabをすばやく押して離す動作で直前のウィンドウにフォーカスが移動しない場合があるのが気になっていました。
そこで、TaskSwitchXPに変更してみました。
動作も軽快で、直前のウィンドウにもすばやく切り替えれるし、すごくいい!!です。
そのほかにもいろいろな機能があるようなので、そのうち試してみたいと思います。
参考
Norton AntiVirus コマンドラインからスキャンを実行する方法
前回は、Symantec Antivirus Corporate Editionでコマンドラインからスキャンを実行する方法を調べました。
今回は、自宅で利用しているNorton AntiVirus 2006でコマンドラインからスキャンを実行する方法を調べてみました。
コマンドラインからのスキャンということで、ヘルプにそのものずばりが書いてありました。
- NAVW32 [[<パス名>] <オプション>] <パス名>
- ドライブ、フォルダ、ファイルまたはそれらの組み合わせをスキャンします。項目を組み合わせてスキャンしたい場合にはスペースで項目を区切ります。パス名を指定する場合にはワイルドカード文字を使います。
- /A
- A と B を除くすべてのドライブをスキャンします。
- /L
- A と B を除くすべてのローカルドライブをスキャンします。
- /S[+|-]
- パス名で指定したすべてのサブフォルダをスキャンします。
- /B[+|-]
- ブートレコードのスキャンをオン (+) またはオフ (-) にします。たとえば、NAVW32 A: /B または NAVW32 B: /B- と入力します。
- /BOOT
- すべてのハードディスクドライブのマスターブートレコードとブートレコードをスキャンし、リムーバブルドライブの指定があればそのドライブもスキャンします。
- /NORESULTS*1
- スキャン結果のレポートを画面に表示しません。
- /HEUR:[0|1|2|3]
- Bloodhound 感度を設定します。0 の場合は無効になります。
コマンドラインからメモリとファイル参照の感染ファイルを次のようにスキャンすることもできます。
- Navw32 /SESCAN
- メモリとファイル参照の感染ファイルを排他的にスキャンします。
- Navw32 /SE+
- オプション設定に関係なくメモリとファイル参照の感染ファイルをスキャンします。
- Navw32 /SE-
- オプション設定に関係なくメモリとファイル参照の感染ファイルをスキャンしません。
単純に、全ドライブのスキャンを実行するだけなら
> NAVW32 /L
で実行できます。
ただ、スキャンの方法はわかりましたが、スキャンの終了を検出する方法がわかりませんでした。
Corporate Editionのように、イベントログにも記録されないし・・・
スクリプトを利用してWindowsをロックする方法
Set objShell = CreateObject("Wscript.Shell") objShell.Run "%windir%\System32\rundll32.exe user32.dll,LockWorkStation"
参考
スキャン完了後にシャットダウンする方法(追記)
昨日掲載した、スキャン完了後にシャットダウンするについてですが、実際に昨日実行して帰宅しました。
ところが、今朝出社してみるとスキャンは完了してましたがPCが電源入りっぱなしでした。
どうやら、自分のPCはスクリーンセーバーで”パスワードによる保護”の設定でロックがかかるようにしているのですが、ロックがかかっている状態では、うまくシャットダウンできないようです。
Call ObjOperatingSystem.Win32Shutdown(PowerOff)
この部分を
Call ObjOperatingSystem.Win32Shutdown(ForcedPowerOff)
にするとロック中でもシャットダウンすることができます。
ちなみに、調べている最中にスクリプトによるロックを実行する方法も見つけました。
デフラグをコマンドラインから実行する
コマンドラインからウィルススキャンを実行する方法を紹介しましたが、さらにデフラグをコマンドラインから実行する方法を。
Windows XPなら標準で defragコマンドと言うのがあるのでそれを使えば問題ありません。
参考
http://itpro.nikkeibp.co.jp/article/Windows/20051025/223346/
じゃー、Windows 2000でもdefragコマンド使えばいいやん(上記のサイトにも利用環境のところにあるし)
と思っていたら、Windows 2000では実行できませんでした。
そこで調べていると、Contigというデフラグ用のツールがあるようです。
参考
http://www.ringolab.com/note/daiya/archives/004791.html
ファイル単位や、フォルダ単位でのデフラグができ、何よりWindows 2000で実行できます。
これは便利!!
スキャン完了後にシャットダウンする
以上のようなことをふまえて作成したのがこちら↓
Option Explicit Call StartScan If WaitForEndScan Then Call Shutdown End If ' ウィルススキャンを実行する Sub StartScan Dim WShell Set WShell = WScript.CreateObject("WScript.Shell") WShell.CurrentDirectory = "D:\Download\vpscan\" Call WShell.Run("vpscan.exe /ini",,True) End Sub ' ウィルススキャンの終了まで待機する Function WaitForEndScan Dim objWMIService Dim colMonitoredEvents Dim objLatestEvent Set objWMIService = _ GetObject("winmgmts:{impersonationLevel=impersonate, (Security)}!\\.\root\cimv2") Set colMonitoredEvents = objWMIService.ExecNotificationQuery _ ("Select * from __instancecreationevent where TargetInstance isa 'Win32_NTLogEvent' " _ & "and (TargetInstance.EventCode = '2' OR TargetInstance.EventCode = '21')") Set objLatestEvent = colMonitoredEvents.NextEvent ' EventCode=2:スキャン完了 ' EventCode=21:スキャンキャンセル If objLatestEvent.TargetInstance.EventCode = 2 Then WaitForEndScan = True Else WaitForEndScan = False End If End Function ' シャットダウン Sub Shutdown Const LogOff = 0 'ログオフ Const ForcedLogOff = 4 '強制ログオフ 0 + 4 Const Shutdown = 1 'シャットダウン Const ForcedShutdown = 5 '強制シャットダウン 1 + 4 Const Reboot = 2 '再起動 Const ForcedReboot = 6 '強制再起動 2 + 4 Const PowerOff = 8 '電源断 Const ForcedPowerOff = 12 '強制電源断 8 + 4 Dim colOperatingSystems Dim objOperatingSystem Set colOperatingSystems = _ GetObject("winmgmts:{(Shutdown)}").ExecQuery("Select * from Win32_OperatingSystem") For Each objOperatingSystem in colOperatingSystems Call ObjOperatingSystem.Win32Shutdown(PowerOff) Next End Sub
これでスキャンが完了した時点で、シャットダウンが実行される。
また、スキャンをキャンセルした場合は、何もしない。
SAVCEのスキャン終了を待ち受ける方法
vpscanを利用して、コマンドラインからスキャンを利用する方法はわかりました。
しかし、vpscan.exe自体は、RTVSCAN.exe(ウィルススキャンを実行するサービス)を呼び出すだけで、すぐに終了してしまうため下記のようなバッチファイルではうまくいきませんでした。
START /WAIT VPSCAN.EXE /INI
そこで、イベントログに記録されるスキャン完了のログを監視する方法を調べました。
下記のようなVBSriptで可能でした。
Set objWMIService = _ GetObject("winmgmts:{impersonationLevel=impersonate, (Security)}!\\.\root\cimv2") Set colMonitoredEvents = objWMIService.ExecNotificationQuery _ ("Select * from __instancecreationevent where TargetInstance isa 'Win32_NTLogEvent' and TargetInstance.EventCode = '2' ") Set objLatestEvent = colMonitoredEvents.NextEvent Wscript.Echo "イベント発生"
(アプリケーションログのイベントID:2が、スキャン完了のログ)
参考:http://www.microsoft.com/japan/technet/scriptcenter/scripts/logs/eventlog/lgevvb17.mspx