15

アカウントで実行するようにスケジュールされたタスクを設定しました。実行されるすべてのものは、成功した場合でも、(2)の操作コードを返します。以下のリンクでこのエラーコードを調べましたが、特定のファイルが見つからないと主張しています。

http://www.hiteksoftware.com/knowledge/articles/049.htm

非常に単純なことをしても、(2)の操作コードが返されます。例えば:

run program: cmd.exe

start in path: c:\windows\system32

タスクを開始すると、タスクマネージャーでプロセスが実行されているのを確認したので、タスクを強制終了します。次に、スケジュールされたタスクの履歴をチェックインすると、(2)と表示されます。

私がしていることのより現実的な何か:

<?
/* file in c:\php\test.php */
echo "hello";
?>

プログラムを実行します。php.exe

パスで開始:c:\php

引数:-f test.php

すべてがコマンドラインで機能しますが、Windowsスケジュールタスクは操作コードを返し続けます(2)。(0)の操作コードが表示されるはずです。これは、成功したことを意味しますか?

4

6 に答える 6

25

[アクションの編集]ダイアログボックスの[開始(オプション)]ボックスにパスを入力していない可能性があります。

実行中のプログラムにパスがあったとしても、Windows7ではプログラムの実行場所を指示する必要があります。

于 2012-11-07T21:01:52.020 に答える
3

スケジュールされたタスクを削除して再作成するまで、私は目を見張っていました...今では機能します。理由はわかりませんが、あります。

于 2019-05-09T21:36:00.077 に答える
2

TL / DR:心配しないでください。これは単にタスクが終了したことを意味しますが、それが成功したかどうか、またはどのように失敗したかについては何も教えてくれません。その情報については、「最終実行結果」を参照してください。


質問とトップアンサーは、タスクスケジューラに「最終実行結果」として表示される「リターンコード」の概念と、タスクの履歴に表示される「オペコード」/「オペコード」の概念を混同しています。

だけを実行する単純なPythonプログラムを作成し、sys.exit(7)タスクスケジューラを介して実行すると、最終実行結果は0x7、オペコードは2になります。何も実行しない場合、またはsys.exit(0)、最終実行結果を取得します。 「操作は正常に完了しました(0x0)」のオペコードは2です。つまり、実行されたプログラムからの戻りコードによって、最終実行結果が決まります。OpCodeは定数2のように見えます。これは、オペコード2がリターンコード2に関連していないことも示しています。これは、ファイルが見つからないことを意味している可能性があります。実行時にファイルが検出され、含まれているコードに応じて異なる最終実行結果が返されることがわかっています。

さらに、Windowsフォーラムの投稿は、この履歴ビューが実際にイベントログから出ていることを指摘しています。案の定、イベントログで同じイベントを見つけることができます(常に値2)。これは、OpCodeの定義がイベントに使用される定義と同じになることを意味し、Windowsイベントの概念よりもタスクスケジューラの概念ではありません。

イベントのオペコードとは何ですか?明確な答えを得るのに苦労しましたが、私が知る限り、それは最終的にはイベントログに書き込むプログラムによって制御されているようです。プログラムでオペコードを定義するためのドキュメントがあります。この場合、イベントログに書き込むのは、タスクスケジューラ自体またはWindowsの他の何かです。

最後の観察:イベントビューアに移動して、を探し、Log: Microsoft-Windows-TaskScheduler/Operational操作コードの列を追加して並べ替えると、常に2であることがわかります。イベント100と200は常に1です。これは私の手動実験ですが、スケジュールされたタスクを使用している他のすべてのランダムプログラムも含まれています。たとえば、私の知る限り動作しているDropboxやGoogleアップデーターなどです。Source: Microsoft-Windows-TaskSchedulerEvent ID: 102,201

これらすべてをまとめると、スケジュールされたタスクの開始中に生成されたイベントは、イベントログへの書き込み時にオペコード1を使用するようにWindowsによってハードコーディングされ、タスクの終了中に生成されたイベント(成功したかどうか-イベントログに書き込むときに2のオペコードを使用するようにWindowsによってハードコーディングされています。このオペコードは、好奇心を超えて心配する必要のあるものには何の影響も与えない赤いニシンのようです。

于 2020-08-18T07:51:22.077 に答える
1

ここでのパーティーに遅れていることはわかっていますが、問題の多くは、運用コード戻りコードを混同していることに起因していると思います。私はWindowsプログラミングや内部の専門家ではありません(私はWindowsシステムを使用してプログラミングを生計を立てていますが、私のプログラミングはWindowsシステム用ではありません)。

私が正しく理解している場合:操作コードは、プログラマーが設定することを決定した値で実行されているルーチンによって設定されます。戻りコードは、成功または失敗を示します。

スケジュールされたタスクの1つの履歴から、次の(編集された)例を考えてみます。イベント201、タスクカテゴリ「アクションが完了しました」は(2)の操作コードを示しています。下の[全般]タブの下に、次のメッセージがあります。

タスクスケジューラは、タスク "\ My_task"、インスタンス "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}"、アクション "C:.....\blahblah.exe"をリターンコード0で正常に完了しました。

成功の兆候があります。別の戻りコードは失敗を示します。(2)の操作コードは、報告されたときにルーチンが(この場合は)終了したことを示しているにすぎません。オペコードに解釈される設定値はないと思います。

于 2014-10-17T20:42:50.927 に答える
1

私は同様の問題を抱えていて、受け入れられた回答とそのコメントの両方で提案されたものに加えて、私はもう1つのことをしなければならないことに気づきました。タスクを再作成し、その「構成」をWindows Server 2003、Windows XP、またはWindows 2000に設定する必要がありました。理由はわかりません。これらのOSのいずれにも対応していないためですが、実行した後、タスクは実際に機能しました。

これが実行され、機能する場合でも、エラーコードが表示される場合exit 0は、スクリプトの最後に入力してみてください。

これが誰かに役立つことを願って、それを見つけるのに私は多くのグーグルを要しました。

于 2016-04-18T16:08:35.767 に答える
1

@ojchaseは正しいです
オペコードは、イベントプロバイダーによってイベントに添付されます。オペコードは、アプリケーションがイベントを発生させたときに実行していたアクティビティまたはアクティビティ内のポイントを識別する数値を定義します。

オペコード1は、イベントを生成するときに、アプリケーションがアクティビティの開始時にあったことを意味します。
オペコード2は、イベントを生成するときにアプリを意味します。活動の終わりにありました。

したがって、オペコードは成功または失敗とはほとんど関係がありません。

出典:
https ://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.eventing.reader.standardeventopcode?view = net-5.0
https://docs.microsoft.com/en-us/dotnet /api/system.diagnostics.eventing.reader.eventopcode?view=net-5.0

于 2021-08-20T06:14:48.343 に答える