Windows 10のトラブルシューティング事例――壊れたタスクを復元する/削除する:山市良のうぃんどうず日記(60)(1/2 ページ)
日常的なタスクの自動実行のために、Windowsの「タスクスケジューラ」は便利です。Windows 7/8.1をWindows 10にアップグレードしたことで、以前は動いていたはずのタスクの登録がエラーになっていませんか? 特に、Windows 7からのアップグレードの場合は、タスクスケジューラの仕様変更が影響しているかもしれません。
自動化タスク、Windows 10にアップグレード後もちゃんと動いていますか?
2015年7月にスタートしたWindows 7やWindows 8.1からのWindows 10への無料アップグレード。全く問題なくアップグレードできた人もいれば、アプリケーションやデバイスの互換性問題に悩まされた人もいるでしょう。あるいは、原因不明のトラブルに巻き込まれた人もいるはずです。
Windows 7 Service Pack1(SP1)から設定やアプリを引き継いでWindows 10にアップグレードした場合は、Windows 7 SP1環境でスケジュールされていた「タスク」の移行でトラブルが発生しているかもしれません。アップグレード後に「タスクスケジューラ」や「イベントビューアー」を開いて見なければ、トラブルが生じていても気付かないこともあります。
今回も筆者が実際に遭遇した、スケジュールされたタスクの移行に関するトラブル事例とその解決方法を紹介します。
タスクスケジューラに表示されない破損したタスク
Windows 7 SP1からWindows 10にアップグレードしたPCで、タスクスケジューラ(taskschd.msc)を起動したところ、「選択されたタスク“タスク名”が存在しません。現在のタスクを表示するには、[最新の情報に更新]をクリックしてください。」というエラーメッセージが2回表示されました。アップグレードによって、2つのタスクの登録が壊れてしまったようです(画面1)。
メッセージに従って「最新の情報に更新」をクリックしても、同じメッセージが表示され、問題のタスクは「タスクスケジューラライブラリ」に表示されません(画面2)。
削除しても問題のないタスクであると分かっていれば、タスクを削除することで問題は解決します。タスクスケジューラに問題のタスクが表示されない場合でも、「SCHTASKS /QUERY」コマンドで問題のタスクを表示できれば、さらに「SCHTASKS /DELETE」コマンドを実行することで問題のタスクを削除できます。
では、削除してよいかどうかを判断できない場合、または削除したくない場合は、どう対処すればよいのでしょうか。
問題の調査のために、タスクをエクスポートしてから削除する
スケジュールされたタスクがエラーとなっている原因を調査するために「%Windir%\System32\Tasks」(%Windir%は通常「C:\Windows」)フォルダにある、問題となっているタスクのファイルを、別のパスにXMLファイルとしてコピーします。
例えば、コマンドプロンプトを開き、次のコマンドラインを実行します(画面3)。なお、問題のタスクのファイルは「%Windir%\System32\Tasks」フォルダよりも深い階層のパスに存在することもあります。
問題のタスクをXMLファイルとしてコピーする
CD %Windir%\System32\Tasks
COPY "タスク名" %Temp%\タスク名(または分かりやすいファイル名).xml
この操作で、問題のタスクをXMLファイルとしてエクスポートできました。ここで、タスクスケジューラのエラーを発生させている問題を解消するために、スケジュールされたタスクの登録を削除します。コマンドプロンプトを管理者として開き、次のコマンドラインを実行してください(画面4)。
スケジュールされたタスクを削除する
SCHTASKS /DELETE /TN "タスク名" /F
この方法でタスクを削除できない場合は、次の手順を試してみてください。
まず、「%Windir%\System32\Tasks」フォルダにある問題のタスクのファイルを、以下の「DEL」コマンドで削除します(画面5)。
タスクのファイルを削除する
CD %Windir%\System32\Tasks
DEL タスク名
次に、「レジストリエディター(Regedit.exe)」を開き、次のキーにある「Id」値のデータ(例:{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX})を控えます。
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\タスク名
「Id」値の値を確認したら、以下の5つのレジストリキーを全てキーごと削除します。{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}は、「Id」値のデータに置き換えてください。
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\タスク名
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\Tasks\{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\Plain\{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}(存在しない場合もある)
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\Logon\{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}(存在しない場合もある)
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\Boot\{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}(存在しない場合もある)
Copyright © ITmedia, Inc. All Rights Reserved.