Windows 10のトラブルシューティング事例――壊れたタスクを復元する/削除する山市良のうぃんどうず日記(60)(1/2 ページ)

日常的なタスクの自動実行のために、Windowsの「タスクスケジューラ」は便利です。Windows 7/8.1をWindows 10にアップグレードしたことで、以前は動いていたはずのタスクの登録がエラーになっていませんか? 特に、Windows 7からのアップグレードの場合は、タスクスケジューラの仕様変更が影響しているかもしれません。

» 2016年03月14日 05時00分 公開
[山市良テクニカルライター]
「山市良のうぃんどうず日記」のインデックス

連載目次

自動化タスク、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)。

画面1 画面1 Windows 7 SP1からWindows 10にアップグレードしたPCで「タスクスケジューラ」を起動すると、2つのタスクがエラーに

 メッセージに従って「最新の情報に更新」をクリックしても、同じメッセージが表示され、問題のタスクは「タスクスケジューラライブラリ」に表示されません(画面2)。

画面2 画面2 問題のタスクは「タスクスケジューラ」に表示されない

 削除しても問題のないタスクであると分かっていれば、タスクを削除することで問題は解決します。タスクスケジューラに問題のタスクが表示されない場合でも、「SCHTASKS /QUERY」コマンドで問題のタスクを表示できれば、さらに「SCHTASKS /DELETE」コマンドを実行することで問題のタスクを削除できます。

 では、削除してよいかどうかを判断できない場合、または削除したくない場合は、どう対処すればよいのでしょうか。

問題の調査のために、タスクをエクスポートしてから削除する

 スケジュールされたタスクがエラーとなっている原因を調査するために「%Windir%\System32\Tasks」(%Windir%は通常「C:\Windows」)フォルダにある、問題となっているタスクのファイルを、別のパスにXMLファイルとしてコピーします。

 例えば、コマンドプロンプトを開き、次のコマンドラインを実行します(画面3)。なお、問題のタスクのファイルは「%Windir%\System32\Tasks」フォルダよりも深い階層のパスに存在することもあります。

問題のタスクをXMLファイルとしてコピーする

CD %Windir%\System32\Tasks

COPY "タスク名" %Temp%\タスク名(または分かりやすいファイル名).xml


画面3 画面3 「%Windir%\System32\Tasks」フォルダから問題のタスクのファイルを拡張子「.xml」を付けて別のパス(この例では「%Temp%」フォルダ)にコピーする

 この操作で、問題のタスクをXMLファイルとしてエクスポートできました。ここで、タスクスケジューラのエラーを発生させている問題を解消するために、スケジュールされたタスクの登録を削除します。コマンドプロンプトを管理者として開き、次のコマンドラインを実行してください(画面4)。

スケジュールされたタスクを削除する

SCHTASKS /DELETE /TN "タスク名" /F


画面4 画面4 「SCHTASKS /DELETE」コマンドを実行して、問題となっているタスクの登録を削除する

 この方法でタスクを削除できない場合は、次の手順を試してみてください。

 まず、「%Windir%\System32\Tasks」フォルダにある問題のタスクのファイルを、以下の「DEL」コマンドで削除します(画面5)。

タスクのファイルを削除する

CD %Windir%\System32\Tasks

DEL タスク名


画面5 画面5 「%Windir%\System32\Tasks」フォルダから問題のタスクのファイルを削除し、関連するレジストリキーも削除する

 次に、「レジストリエディター(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}(存在しない場合もある)

       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

AI for エンジニアリング
「サプライチェーン攻撃」対策
1P情シスのための脆弱性管理/対策の現実解
OSSのサプライチェーン管理、取るべきアクションとは
Microsoft & Windows最前線2024
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。