« WSHから他のWSHを操作する。(その3) | トップページ | 常駐のWSHスクリプトを外部からの指示で終了する。 »

2009年3月27日 (金)

WSHスクリプトの強制終了は避けましょう。

Excelなど、アウトプロセスサーバのオブジェクトを参照するWSHスクリプトを強制終了すると、参照カウンタが残って、サーバが終了できなくなったりします。

APIのTerminateProcess()
タスクマネジャの「プロセスの終了」
タスクスケジューラの「タスクの終了」
TaskKill.exe
CScriptのCTRL+C
WScript.ShellのExec().Terminate()
などの強制終了は避けられるなら避けたほうがよいでしょう。

一方、WScript.Timeoutによる終了ではオブジェクト参照が解放されます。

万一の暴走やハングアップの対策に、WScript.Timeoutを設定しておくとよいでしょう。
スクリプトのソース内で、WScript.Timeout=秒
コマンドラインのオプションで、//T:秒
ショートカットファイル(.WSH)で、Timeout=秒

« WSHから他のWSHを操作する。(その3) | トップページ | 常駐のWSHスクリプトを外部からの指示で終了する。 »