C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

タスクスケジューラに登録したタスクを実行したい

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■88425 / inTopicNo.1)  タスクスケジューラに登録したタスクを実行したい
  
□投稿者/ Crow (4回)-(2018/08/29(Wed) 19:22:42)

分類:[C#] 

お世話になります。

c#(Visual Studio 2015)を使用しています。
メインとなるシステムの開発と、別プロセスで時刻校正をさせたく、時刻校正専用プログラムを作成しております。

この時刻校正プログラムは一定時間毎に時刻をOSにセットする動作ですが、管理者権限で起動しないとOSの時刻が反映しません。
しかし、無人で自動運用するシステムなのでPC電源ON→スタートアップ時に確認ダイアログが出ては困るのです。

そのためタスクスケジューラに時刻校正プログラムを起動するタスクを「最上位の特権で実行する」にチェックを入れて登録し、これを実行することで管理者権限で確認なしで起動できることは確認済です。
スタートアップ時+毎日1回念のためタスク起動(+2重起動防止)でできるだけ停止しないようにするつもりですが、
可能であればメインのプログラムの起動時に本タスクを起動させたいと考えています。

長くなりましたが、本題として・・
「c# のプログラムでタスクスケジューラに登録済のタスクを実行すること」
は可能でしょうか?

よろしくお願いします。

引用返信 編集キー/
■88426 / inTopicNo.2)  Re[1]: タスクスケジューラに登録したタスクを実行したい
□投稿者/ Hongliang (679回)-(2018/08/29(Wed) 19:45:32)
その時刻校正用プログラムというのが、

A. 起動させっぱなしのようなモノなら、
 その時刻校正用プログラムの中で、定期的にプロセス一覧をチェックして、
 対象となるプロセスが起きた時に校正する、という仕組みを入れる

B. 定期的に起動させて校正が終わったらすぐ終了するようなモノなら、
 タスクのトリガーに「イベント時」を追加し、特定のイベントが発生した時に起動するようにする。
 "メインのプログラム"は起動時にイベントログに上記イベントを書き出す

というような仕組みを思いつきますが。
引用返信 編集キー/
■88435 / inTopicNo.3)  Re[2]: タスクスケジューラに登録したタスクを実行したい
□投稿者/ せば (6回)-(2018/08/30(Thu) 11:04:36)
既にご存知かも、知れませんが一応
https://freesoft.tvbok.com/tips/pc_windows/wintimecontrol.html

事情があって上記のような事が出来ないんであれば、スルーして下さい。
引用返信 編集キー/
■88436 / inTopicNo.4)  Re[3]: タスクスケジューラに登録したタスクを実行したい
□投稿者/ Crow (5回)-(2018/08/30(Thu) 14:46:21)
メインシステム、時刻校正PGが常時起動しっぱしで使用する前提です。
>せば様 
情報ありがとうございます。
時刻校正はNTPサーバをを2つ設定してエラー時に定められたルール・タイミングで毎回コロコロと切替えて使う独自動作のPGなのでWindowsの機能やレジストリには頼りがたい仕様です。

>Hongliang 様
案をいただきありがとうございます。

結論としては教えていただいた案をもとに、
・事前に時刻校正プログラムを管理者権限でを起動するだけのタスクをスケジューラで登録(+トリガーはB案のイベントを条件にした)
・管理者権限のPowershellにて予定しているイベントソースを登録(この登録もC#で行うと管理者権限がいるようなので)
・メインプログラム起動時にイベントを書き出しタスク起動を促す。
・メインプログラムで以後もプロセス一覧チェックし、時刻校正PGが誰かに終了された、エラーで落ちた等で一定時間起動していない様子なら再度イベント書き込み→タスク起動

という構成でうまくいきそうです。
ありがとうございました。

解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ