[C#]タスクスケジューラをプログラムから登録(各種設定方法)

[C#]タスクスケジューラをプログラムから登録(各種設定方法)

こんにちは。
今日は私がVisualStudioでタスクスケジューラを登録の仕方を勉強していたので紹介します。
以下のサイトの方を参考にさせて頂きました。

https://www.doraxdora.com/blog/2017/10/07/post-2680/

とてもわかりやすくて、ほとんどの場合これだけで事足りるのですが。
私の場合、予期せぬエラーともっと細かい設定方法までしたのでご紹介します。

コードはわかりやすいように上記サイトの方のを拝借させていただきます。

やりたいこと

私がやりたかったのは、”タスクを実行するためにスリープモードを解除する”にチェックをプログラムから打ちたかったので、補足させて頂きます。

実装コード

上記サイトを見れば十分ですが、念のために最初から説明すると
まずは[参照の追加]を選択し、

ライブラリの追加

TaskSchedulerの参照を追加します。

TaskScheduler

以下のコードを拝借させていただきます。

設定の追加

まずは、タスクスケジューラの設定の種類ですが、意外と多いです。
条件の部分だけ見てもこれだけあります。

タスクスケジューラ条件

一つ一つ解説してもいいのですが、自分なりの設定の見つけ方を発見したので、それを紹介します。

まずは”タスクを実行するためにスリープを解除する”にチェックした状態で、
設定したタスクスケジューラを任意のフォルダにエクスポートします。

設定のエクスポート

続いて、今度は”タスクを実行するためにスリープを解除する”のチェックを外し、
設定ファイルの名前を変え、エクスポートします。

設定をエクスポート

そして、エクスポートしたファイル2つを見比べると、

ファイルのマージ

タグ名<WakeToRun>が変わっているのが分かります。
チェックありの場合、trueになっていますね。

なのでコードには、

こいつを追加してやりましょう。

この要領で追加すれば、問題なくやりたい設定もできるのではないかと思います。

VisualStudioで”System.UnauthorizedAccessException: ‘アクセスが拒否されました。”と出た場合

私はこれで3時間ぐらい悩んでしまいました…
コードの中でユーザを設定して、ちゃんとAdministratorなのに…とずっと思っていましたが、
解決方法はとても簡単でした。

一度VisualStudioを保存して終了し、立ち上げる時に“管理者として実行”としてやればよいです。

管理者として実行

 

C#カテゴリの最新記事