Q

Windows 2000 Serverで,Windowsバックアップ(ntbackup)などをタスクとしてスケジューリングして実行させようと考えています。ntbackupによるテープへのバックアップを設定し,コンピュータからログオフした状態で運用したところ,バックアップは問題なく実行できました。

 しかし,あるとき操作ミスで書き込み禁止状態のテープを装填したまま,スケジュールしたバックアップ時間がきてしまいました。当然バックアップはできないので,テープを交換しようとしましたが,テープ装置のイジェクト・ボタンが効きません。あわててコンピュータにログオンしてみても,画面には特に何もダイアログが表示されておらず操作ができませんでした。仕方ないので,OSを再起動して,ようやくテープ装置のイジェクト・ボタンでテープが取り出せるようになりました。

 調べてみると,どうもエラー発生後だけでなく,タスクの実行中にログオンしても何も画面に表示されないようです。例えば,タスクにスケジュールしたバックアップ時間になってからログオンしても,バックアップを実行している画面は表示されていません。

 タスクを実行するアカウント名と,コンピュータにログオンするユーザーのアカウント名をAdministratorにそろえても同様です。しかし,コントロール・パネルの[タスク]で状態を確認すると確かに[タスクを実行中]でした。タスク・マネージャ上にもntbackup.exeのプロセスがあるので,実行中なのは間違いないようです。

 これはどういうことでしょうか?

A

この問題は,2つの要素がからんでいます。


△ 図をクリックすると拡大されます
図4●バックアップ実行時にメディアに書き込めないと通常はダイアログを表示して知らせる

 ntbackupは通常,テープが書き込み禁止だとわかると[メディアの挿入]ダイアログを表示して,ユーザーの指示を待ちます(図4)。ここで指示しない限り,ntbackupはテープを利用し続ける状態になってしまい,テープ装置側ではテープをイジェクトできないことがあります。

 もしタスクでのバックアップ作業中にイジェクトするには,実行中のタスクのアイコンを右クリックして,[タスクの終了]を指示してみてください。それでもうまくいかない場合は,ntbackup.exeのプロセスが残っていますので,タスク・マネージャからntbackup.exeプロセスの強制終了を試みるか,OSを再起動します。

 一方,ログオンしてもダイアログが表示されなかったのは別の問題です。実はウインドウやダイアログを表示するプログラムであっても,タスク機能で実行した場合には実行中にはそのユーザー・インターフェースが表示されないようになっています。

 このような「デスクトップとの対話」を定期的なジョブで実現するには,タスク・スケジューラをやめて,ATコマンドに変更するのが最も簡単です。

 タスク機能がなかったWindows NTでは,スケジュール実行のためにATコマンドがありました。ATコマンドでの実行も標準ではユーザー・インターフェースが表示されませんが,「/interactive」オプションを指定すれば,スケジューリングしたプログラム実行中に画面上にダイアログを表示させることができます。このATコマンドは,Windows 2000以降でも利用できます。詳しい使用方法については,コマンド・プロンプトで「at /?」と入力するとヘルプが表示されます。


△ 図をクリックすると拡大されます
図5●タスク・スケジューラで設定したタスクのプロパティでは[実行するアカウント名]は指定できるが,対話型のダイアログを表示する設定はない

ツールを使えばタスクでも表示可能
 それでは,タスクで「デスクトップとの対話」を許可することは無理なのでしょうか。タスクを実行する権限は通常,個々のタスクのプロパティにある[実行するアカウント名]で設定します(図5)。残念ながら,このプロパティ画面には「デスクトップとの対話」を設定する個所がありません。タスク・ウイザードを使っても同様です。

 ところが,MSDNのWebサイトでTask Scheduler APIを調査すると,実はTASK_FLAG_INTERACTIVEというフラグを明示的に設定することで「デスクトップとの対話」が設定できると説明されています(該当サイト)。



△ 図をクリックすると該当サイトへ
図6●川俣 晶氏のフリーウエアataskなどを使うと,タスクに「デスクトップとの対話」を許可するフラグが簡単に設定できる

 つまり,標準の設定機能にないものの,Task Scheduler APIを直接呼び出してフラグの設定を変更すれば,タスクにも「デスクトップとの対話」を許可できることになります。自分で開発してもいいですが,この設定ができるツールがインターネット上で公開されているので,これらを利用するのが手軽でしょう。例えば,図6に示した川俣 晶氏が作成したフリーウエアataskなどがあります(該当サイト)。


西山 佳克