• 締切済み

.NETアプリケーションの戻り値

.NET(C#)のコンソールアプリケーションを起動し、動作中にタスクマネージャから強制終了したときの戻り値について教えてください。 以下のサイト http://blogs.timberlandchapel.com/blogs/timberlandchapel/archive/2006/06/28/838.aspx には、強制終了時の戻り値は「-1073741510」とありました。 ところが実際にサンプルPGを作ってやってみたところ、戻り値は「1」となります。 PG的には単純にMainの中でSleepの1行だけしか書いておらず、 Sleep中にタスクマネージャからプロセスを終了しています。 サンプルPGの呼出は.batのファイルからです。 (1)事実として「1」が戻ってきているのですが、それが正しいのでしょうか? 正しいとして、何かドキュメントなど情報はありますでしょうか? (2)強制終了時に「-1073741510」を返すようにすることは可能でしょうか? ■環境 Windows Server 2003(x86) / Windows 7(x86) .NET 3.5 SP1

みんなの回答

回答No.1

タスクマネージャからの強制終了は,TerminateProcess APIを使った強制終了にほぼ等しいわけですが, TerminateProcess APIの第2引数は終了コードです。 http://msdn.microsoft.com/en-us/library/windows/desktop/ms686714(v=vs.85).aspx つまり,TerminateProcessされた場合の終了コードは,強制終了させる側が決定します。 強制終了される側のプロセスは,直ちに全てのスレッドが強制終了させられます。 http://msdn.microsoft.com/en-us/library/windows/desktop/ms686722(v=vs.85).aspx > all threads of the process are terminated immediately with no chance to run additional code. この時点で強制終了に対して介入できないため, 強制終了される側のプロセスで終了コードを設定することはできません。 (1) について。 ドキュメントに書かれていない限り,「正しい」とも「正しくない」とも言えません。 但し,上記の理由により,タスクマネージャ以外によって強制終了させられた時に, 異なる終了コードを返す可能性は十分あり得ます。 (2) について。 強制終了に介入できないため,不可能です。 強制終了させる側のアプリケーションを作るのであれば,そのアプリケーションからの強制終了に限り特定の終了コードを返すことは可能ですが。

関連するQ&A

  • アプリケーションの強制終了について

    間違えてソフトを立ち上げてしまった時って ありますよね。 そしてそれが立ち上がってから終了させる。 例えばDreamweaver等、ソフトが重いとその時間が とっても煩わしく感じます。 強制終了しようにも立ち上がるまでは タスクマネージャーに出てこないので出来ません。 「立ち上がりかけているソフトを 無理やり強制終了させる。」 こんなことが例えばショートカットなどで 出来たりするのでしょうか? よろしくお願いします!

  • Windows2000 ServerでのEXE強制終了について

    Windows2000 Server SP4上であるEXE(プログラム)を実行しています。 このEXEが稀に暴走しCPUを長時間食ってしまうので、タスク マネージャから強制終了を試みると、「アクセスを拒否されました」 という警告メッセージのため強制終了ができません。 全く同じEXEをWindows 2003やWindows XP上で実行した場合は、 タスクマネージャから強制終了させることができます。 Windows2000には、EXEの強制終了機能はないのでしょうか? 現状では、マシンのリブートしか方法がありません。 どなたか、ご存知の方、お教え下さい。

  • アプリケーションエラーについて

    こんばんは、 いつも大変お世話になっております。 PCに全然詳しくなく恐縮ですが、 教えていただけましたら幸いです。 PCを立ち上げると、 背景の画像は表示されるのですが、 アイコンとかスタートボタン、下のタスクバーなど一切表示されず、 下記のメッセージだけが出てきます。 windowsタスクマネージャー アプリケーションエラー “0x00000000”の命令が“0x00000000”のメモリを参照しました。 メモリが“read”になることはできませんでした。 プログラムを終了するには〔OK〕をクリックしてください。 プログラムをデバッグするには〔キャンセル〕をクリックしてください。 〔OK〕にしても〔キャンセル〕にしても変化がありません。 どのキーを押しても全く反応が無く、 ctrl+Alt+Deleteでタスクマネージャーを出して、 終了することぐらいしか出来ません。 最近は突然DVDが見れなくなったり、 テレビ番組の録画をしながらインターネットが出来なくなったり、 「仮想メモリが不足しています」 「仮想メモリページファイルのサイズを増やしています。」 といったメッセージが出てきたりしていました。 どうしてしまったのでしょうか、 これは直る見込みはあるのでしょうか‥? 申し訳ございません、宜しくお願い致します。 使用しているPC VAIO PCV-W501B version5.1 Windows XP

  • WINDOWS XPのもとで、ユーザーアプリケーションを走らせていない

    WINDOWS XPのもとで、ユーザーアプリケーションを走らせていないにもかかわらずC異常に反応が悪くなっております。 タスクマネージャーを見たところ  (1)「system idle process」「System」というソフトのCPU使用率が、   で合わせて72%程度になっています。  また、  (2)Firefox(WEBブラウザー)を起動すると、CPU使用率が100%に   至ることがあります。  さらに、  (3)WINDOWS XPを終了をかけるのですが正常終了ができず   (「WINDOWSをシャットダウンします」と表示されたまま)   の状態です。   タスクマネージャーからシャットダウン操作を行うか、強制的に   電源スイッチで切らざるを得ない状況です。   別のパソコンで確認しましたが、「system idle process」「System]の  タスクは見あたりません。 さらに、Firefoxを起動してもCPU使用率は2~3%程度です。 このような場合の対処方法を教えてください。    WINDOWS XP(:単体購入)のOSをDVD装置から「修復モード」で復旧できるものでしょうか?

  • パソコンのネットができずに困っています。

    PCについてお教えください。 最近、ネットを繋いでいると 「このプログラムは応答していません」と出て 「プログラムを待たずに終了する」を選んでブラウザを消そうとするのですが、 終了できません。 以前はこんなメッセージでなかったんですが最近頻繁に起こっています。 そして、タスクマネージャで強制終了しようとするのですが、 シャットダウンしている途中の 「シャットダウンしてます。しばらくお待ちください」 から動かなくて毎回電源ボタン長押しで強制終了しています。 ブラウザが悪いのかと思い、Firefox IE,クロームと全部使ってみたんですが同じ状況でした。 解決方法を知っている方がおられたらお教えください。 PC環境なんですが、 OS  windows7 32bit CPU   i7 860 2.8GHz メモリ 4096MB です。よろしくお願いします。

  • アプリケーション Flash Player 5.0 r30

    ホームページ上からスクリ-ンセーバーを ダウンロードしたのですが 解凍、インストール後 スクリ-ンセーバーとして起動するのですが 元に戻りません(停止できません) プレビューで起動させても 停止させることができません 終了さすには タスクマネージャから強制的に 終了させるしかないのでしょうか? スクリーンセーバーとしてちゃんと起動さすには どうしたらよいでしょう? ファイルの種類:アプリケーション 説明:Flash Player 5.0 r30 Windows XP 使用 初心者ですので判らない事が多くて よろしくお願いいたします

  • Javaコンソールが消えない

    アプレットを使用したページを見ると Javaコンソールが起動し、アイコンがタスクトレーに出てきます。 大概は、ブラウザを終了すればJavaコンソールも終了するようですが 時々、Javaコンソールのアイコンが残っていることがあります。 「Alt」+「Tab」で画面を切り替えたり タスク マネージャを見てみたりするのですが ブラウザもJava関係のモノも起動しているようには思えません。 ただ、タスク マネージャのプロセスにIEXPLORE.EXEがあり それを殺すと終了するようです。 この状態は正常なのでしょうか? 殺す以外に回避方法があれば、教えてください。

    • ベストアンサー
    • Java
  • CreateProcessでコンソールアプリケーションを起動するには

    コンソールアプリケーションの中で、CreateProcess関数を用いて、自分自身のアプリケーションを起動したところ、次の結果になりました。 ・CreateProcess関数自体は成功する ・タスクマネージャで確認すると自分自身が2つ起動されている ただし、コンソールアプリケーションのウィンドウは1つしか開かず、そのウィンドウを2つのアプリケーションで共有しているかのように動作します(printfによるメッセージが2重に表示されるなど)。 使用言語はVC++ .NET 2008で、デバッガによる動作をさせています。 詳しい方、宜しくお願いします。

  • タスクマネージャー

    タスクマネージャーと普通の強制終了は何が違うのでしょうか? あるアプリケーションソフトがフリーズしてしまったのですが、セーブしていなかったため、強制終了したくありません。 タスクマネージャーで終わらせるとデータが残ってる可能性がある、とかありますか? あるいは、1%でも、データを残したまま、フリーズを治せる方法があったら教えてください

  • アプリケーションを正しく初期化できませんでした

    Windowsを起動して数時間すると、何を起動しようとしても 「アプリケーションを正しく初期化できませんでした(0x????????)」 と表示され、起動しません。 0x????????はプログラムにより違いますが、何度やっても同じ値です。 スタートメニューでも、「ファイル名を指定して実行」でも、あらかじめ起動しておいたタスクマネージャでも、起動しません。 このような症状になる前にあらかじめ起動しておかなければ、Ctrl+Shift+ESCを押してもタスクマネージャすら起動しません。 すでに起動しているプログラムはそれなりに正常に動いているようですが、TCP接続はすべて切断されていて、新たな接続も確立できません。 起動して2~3時間操作したあと就寝し、5~6時間後見るとこのようになっています。 何か原因や解消方法の情報をお持ちでないでしょうか。 HP nw8440 Windows XP SP3 32bit ESET Smart Security

専門家に質問してみよう