2011年12月27日火曜日

タスク スケジューラを起動したら、エラーが表示される - 起動できないタスクと、タスク イメージの問題

1. タスク スケジューラを起動したら、エラーが表示される

  • img_0030スタートメニュー > アクセサリ > システム ツール > タスク スケジューラ

を起動したら、以下の2つのエラーが表示された。

タスク PC Probe の起動 でエラーが発生しました。エラー メッセージ: 指定されたアカウント名が有効ではありません。

タスク イメージは破損しているか、または変更されています。 (HRESULT からの例外: 0x80041321)

環境は、Windows 7 Professional 64bit 。

 

2. タスクを削除するには、エクスプローラで、ファイルを削除

1つ目の問題は、

PC Probe の起動

という名前のタスクの起動で、問題が発生するようだ。

しかし、タスク スケジューラを起動し、当該のタスク名を探しても見つからなかった。

 

コマンドプロンプトで、タスクは表示されるが、削除できない

コマンドプロンプトを使ってみよう! -設定・システム操作-を参考にして、コマンドプロンプトより、タスクの一覧を表示。

schtasks /query

その結果、確かに問題となるタスクが、存在することがわかった。

タスク名                                 次回の実行時刻         状態
======================================= ====================== =============
PC Probe の起動                          N/A                    準備完了

コマンドプロンプト上で、削除しようと試みた。

schtasks /delete /tn "PC Probe の起動"

しかし、エラーが表示され、削除できない。

エラー: 指定のタスク名 "PC Probe の起動" はシステムに存在しません。

 

エクスプローラでタスクを削除

タスクスケジューラでイメージの破損 Ashiat 0: によると、

タスク スケジューラに登録されているタスクは C:\Windows\System32\Tasks 内にあり、階層も下の画像の左ペインと全く同じになっています。

  • C:\Windows\System32\Tasks

をエクスプローラで開いてみたら、ファイル“PC Probe の起動”が存在したので削除。

これにより、1つ目のエラーは表示されなくなった。

 

3. タスク イメージの問題

上記のエラーが出なくなっても、2つ目のエラーは、相変わらず表示される。

タスク イメージは破損しているか、または変更されています。 (HRESULT からの例外: 0x80041321)

先ほど参考にしたサイトでは、エクスプローラ上で、タスクに対応したファイルを移動させ、問題となるファイルを見つける方法が書かれている。

1. タスクスケジューラが起動していたら終了させる。
2. C:\Windows\System32\Tasks 内のすべてのフォルダをデスクトップなりに移動させる。
3. その状態でタスクスケジューラを起動させてエラーが出ないことを確認する。
4. あとは「退避させたフォルダ・ファイルを少し戻してタスクスケジューラを起動する。」を繰り返せばいい。
5. ファイル単位で割り出せたらそのファイルを調べて、削除してもいいタスクか判断する。削除できればそこで解決。重要なものそうなら再スケジュールの方法を調べて(Microsoft等に聞いて)実行する必要がある。

調べてみると、以下のタスクに問題があることがわかった。

  • C:\Windows\System32\Tasks\Microsoft\Windows\PerfTrack\BackgroundConfigSurveyor

偶然にも、参考にしたサイトと同じタスク。このタスクは、壊れやすいのかな?

 

4. タスクを修復

できれば、タスクを削除せずに、修復したい。

には、タスク BackgroundConfigSurveyor を修復する方法が書かれている。これに従った結果、エラーが表示されなくなり、タスクを元に戻せた。

以下、行った作業sをまとめる。

 

A. タスクと、レジストリのバックアップ
  1. C:\Windows\System32\Tasks\Microsoft\Windows\PerfTrackBackgroundConfigSurveyor を適当なフォルダへ移動させる。
  2. regedit を起動し、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\Microsoft\Windows\PerfTrack を右クリックしてエクスポート。
  3. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Plain もエクスポート。

 

B. レジストリ項目の削除
  1. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\Microsoft\Windows\PerfTrack\BackgroundConfigSurveyor の Id の値をメモ。
  2. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Plain の中にある、上記でメモした値と同じフォルダ名を削除。
  3. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\Microsoft\Windows\PerfTrack\BackgroundConfigSurveyor を削除。

これにより、タスク スケジューラを起動しても、エラーがでなくなる。

 

C. タスクを作り直す
  1. タスク スケジューラを起動し、タスク スケジューラ ライブラリの中の \Microsoft\Windows\PerfTrack を選択。
  2. 真ん中のペインが空であることを確認し、右クリック > タスクのインポート。
  3. 最初に、BackgroundConfigSurveyor を移動させたフォルダを開き、ファイル名の横にあるセレクトボックスで、「すべてのファイル」を選択。
  4. 上記の BackgroundConfigSurveyor を開くと、ダイアログが表示されるので、OK ボタンを押す。

これにより、タスクが元に戻った。