Windows 7 ホームプレミアムでタスクスケジューラーでバッチファイルを動作させる方法

Macの共有フォルダにアクセスできるようになったので、その機能を使って自動的に共有フォルダをWindows 7のフォルダにバックアップするようにした。バッチファイルを使ってタスクスケジューラーで設定すれば簡単かと思いきや、意外とはまったのでメモしておく。

  1. バックアップしたいMacのフォルダは自分とは別のユーザー(User1としておく)アカウントなので、バッチファイルをUser1のユーザーフォルダの下に作る。オーナーもUser1にしておく。

    c:\Users\User1\Backup.bat

    という感じ。

  2. 次にそのバッチファイルをスケジューラーに登録する。その際、バッチファイルを直接登録するのではなく、cmd.exeを実行ファイルに指定し、オプションとして

    /c [バッチファイルのパス]

    とする。

  3. タスクはUser1として走らせ、ログオンしていなくても実行するようにする。
  4. 毎晩、自動的に実行するようにスケジュールするが、テストのために手動で実行する。そのままだとうまく実行できない(Logon as Batch の権限がないとか)。
  5. そこで権限を与えるのだが、Windows 7 Home Premiumだとグループポリシーエディターがない。なので、昔のリソースキットのntrights.exeを使う。
    リソースキットは下記でダウンロードできる。
    Windows Server 2003 Resource Kit Tools
  6. リソースキットがインストールできたら、User1に権限を与える。cmd.exeを管理者権限であけて以下を実行。

    ntrights -u machine_name\User1 +r SeBatchLogonRight

    これでUser1がスケジューラーからバッチファイルを実行できるようになる。