状況
いくつかのファイルを準備し、プログラム(.exe
)を実行し、そのファイルを削除するバッチスクリプトがあります。
このタスクは1時間ごとに実行する必要があるため、スケジュールされたタスクを使用してこれを構成しようとしています。問題は、前述のプログラムがタスクから呼び出されたとき(.bat
スクリプトを介して、または.exe
直接呼び出したとき)に適切に実行されないことですが、ログに警告またはエラーメッセージが表示されません。
セットアップ
タスクは、すべての特権が適切に設定されたWindowsサービスアカウントとして実行するように構成されています。RDP経由でログオンにこのアカウントを使用する場合は、私が実行できる.bat
と.exe
直接の問題もなく、それでも仕事は何もしないように表示されます。プログラムは常にファイルを変更し、タイムスタンプで変更されたものはタスク中に変更されないため、これは容易に観察されます。
スケジュールされたタスクログで、プロセスの開始、終了などのタスクの情報メッセージを取得します。ただし、「結果コード」は111
(運がなくてGoogleに試されました。 「これはまったく無関係です)。アプリケーションログに、まったく何も表示されません。
私が疑うのは問題です
GUIは対話を必要とせず、操作後に終了するため、GUIは必要ありませんが、プログラムは何らかのスプラッシュスクリーン(実際には通常のウィンドウです)を生成する古い怪物です。ウィンドウが約2秒間表示されます。
GUIのこの要件は、タスクの失敗と関係があると思われますが、よくわかりません。タスクが(RDPを介して)実行されるユーザーでログインすると、スケジュールされたタスクを開始するときにウィンドウが表示されません。
GUIについて編集する
メインウィンドウなしで(を使用してProcessStartInfo.WindowStyle = ProcessWindowStyle.Hidden
)プログラムを起動する非常に小さなC#実行可能ファイルを作成しました。この方法でも、スケジュールされたタスクはプログラムを正常に起動することに成功しませんが、戻りコードはになりました0
。
更新
「ユーザーがログオンしているかどうかに関係なく実行する」ようにタスクを構成し、run with highest privileges
オプションがオフになっている場合、エラー値は2147943859
です。
トラブルシューティングを行うにはどうすればよいですか?
OS = Windows Server 2008 R2 SP1
さらに情報が必要な場合は、コメントでお知らせください。
.exe
スクリプト内からパラメーターを使用して「プログラム」を開始する場合、入力を引数として適切に指定する必要があります。