WindowsXPでタスクスケジューラが何かしらのエラーを起こしている場合、
・Protected Storageサービスが起動状態を確認する
・Crypto\RSA\S-1-5-18を初期化する
の2つのアプローチ方法が存在する。
(1つ、わざとキャッシュをオーバーフローさせて、自動クリーンアップさせる方法があるけど、あれは何か違う気がする)
でも、直らない場合がある。うちの場合はこれが該当。
この場合、WindowsXPの再インストールが近道と言われているが、
先人の奴ら、もう少し頑張れよ、と言いたくなる。
再インストールは、最も時間的コストがデカいので、こいつはあくまで最終手段であり、
これを最短手段としては行けない。
Windows10はことあることに「初期化しろ」という指示があるが、
あれ販売メーカーが言ったらいけないわけですよ。時間的コストが全く考えられてない。
ということで、色々抗った結果、ちゃんと手段が見つかった。
・タスクスケジュールサービスを停止して、Windows\Tasksフォルダを削除
→タスクスケジュールサービスを開始→新しいTasksフォルダの作成されること確認
以上の方法で直りました。
まぁ、これいきなりやると、すべてのジョブが吹っ飛びます。
でも、フォルダ見ると分かるんですが、1ジョブ=1ファイルで管理されています。
なので、先にジョブを適当なフォルダに移すか、削除ではなく、リネームかコピーで対応して、
新しく出来たフォルダにjobファイルを移してやると、ある程度楽です。
でも、この状態だと正常に動きません。
移したあと、プロパティを表示して、どのユーザーで動かすか設定し、パスワードを入力してください。
その状態で、ジョブを開始して正常に起動すれば問題なしです。
■解説
実はjobファイルには実行ユーザー情報が書き込まれていません。
あれは、実行ファイルパス・条件・期間等が書き込まれているだけで、
SA.DATというファイルが、どのジョブをどのユーザーで実行させるか割り当てていると思われます。
ただ、何かしら書き込む段階で、このSA.DATが壊れる場合があると思われます。
Tasksを消すと、このSA.DATが一緒に消されます。
そして、ジョブとユーザー割当時に勝手に作成されます。
なので、このSA.DATに何かしら問題が発生したとき、
・ジョブを実行時、ユーザー割当情報が読み込めないため、ジョブが実行出来ない。
・ユーザー割当時、情報がSA.DATに書き込めなくなるため、エラーが発生する。
の2点が発生すると思われます。
なお、Windows7でもこのSA.DATは存在しているため、
もしかしたらWin7やWin10でも起こるかもしれません。恐怖ですね。
ログインしてコメントを確認・投稿する