シャットダウン時のアプリケーションの自動終了を無効にする


8

一部のプログラムに保存されていないデータが含まれている場合にシャットダウンを続行するかキャンセルするかをユーザーに促すWindows Vistaのシャットダウンプロセスに代わるWindows XPはありますか?

回答:


10

SystemEvents.SessionEndingイベントを渡すことにより、いくつかのコードでこれを行うことができます。これにより、ログオフまたはシャットダウンしようとしたときにダイアログボックスが表示され、ログオフまたはシャットダウンをキャンセルするかどうかを尋ねられます。

コードは、Visual C#2008 Express EditionまたはWindows SDKを使用して無料でコンパイルできます

SDKでは、次のコマンドを使用します。

csc.exe   /out:StopShutdown.exe /target:winexe StopShutdown.cs 

コードは次のとおりです。

using System;
using System.Windows.Forms;
using Microsoft.Win32;

namespace StopShutdown
{
    static class Program
    {
        [STAThread]
        static void Main()
        {
           string desktopRegKey = @"HKEY_CURRENT_USER\Control Panel\Desktop";
           Registry.SetValue(desktopRegKey, "AutoEndTasks", 0);
           Registry.SetValue(desktopRegKey, "WaitToKillAppTimeout", 20000);
           Registry.SetValue(desktopRegKey, "HungAppTimeout", 20000);

            Form AppForm = new Form()
                {
                    ClientSize = new System.Drawing.Size(0, 0),
                    ControlBox = false,
                    FormBorderStyle = FormBorderStyle.None,
                    Opacity = 0,
                    ShowIcon = false,
                    ShowInTaskbar = false,
                    SizeGripStyle = SizeGripStyle.Hide,
                };

            SystemEvents.SessionEnding += (_e, e) =>
            {
                DialogResult dr = MessageBox.Show(
                                    "Cancel shutdown?"
                                    , "Shutdown",
                                    MessageBoxButtons.YesNo,
                                    MessageBoxIcon.Question,
                                    MessageBoxDefaultButton.Button1);

                e.Cancel = (dr == DialogResult.Yes);
            };


            Application.Run(AppForm);
        }

    }
}

編集:

ダウンロード可能なソースとexe


あなたはいい人で、どこかに「StopShutdown.exe」をアップロードするか、それを私にメールしてくれませんか?(あなたがノーと言ったら理解します)
ラワンド2009


よくできました、本当に閉じました:保存されていないファイルを開いたままにしてから、スタートメニューからシャットダウンを呼び出しました。次に、シャットダウンをキャンセルするかどうかを尋ねるプロンプトが表示されましたが、数秒間待って、Windowsはプログラムを終了して実行しましたシャットダウンプロセス...
LAWAND '08 / 08/23

はい、XPをより長く待機させたい場合は、別の投稿で言及されているレジストリ値を変更する必要があります。コードを更新します...
スコットウェインスタイン

実際、私はXPにシャットダウンプロセスを永久に停止させたい(Vistaのように)。とにかくあなたの答えはこれまでで最も近いです...
Lawand

2

レジストリを少し編集したい場合...スタート->実行-> regedit

HKEY_CURRENT_USER \ Control Panel \ Desktop

AutoEndTasksが0であることを確認し、WaitToKillAppTimeoutを20000(デフォルト値の2秒)に設定します。必要に応じて、値を高く設定できます。HungAppTimeout(デフォルトは5000)もありますが、これは応答しないアプリケーションにさらに当てはまります。


これにより、アプリが適切に終了するまでの時間が長くなりますが、シャットダウンプロセスが完全に停止するわけではありません...
Lawand

0

XPでシャットダウンを実行するたびに、プログラムがビジー状態の場合は、進行状況バーと「今すぐ終了」または「キャンセル」のオプションが表示されます。

[キャンセル]をクリックすると、シャットダウンプロセスが停止します。ただし、すでにシャットダウンされているものは元に戻りません。

しかし、シャットダウンを再試行する前に、私が行っていた作業を保存する時間は与えられます。


ただし、プログラムが応答している(ビジーではない)場合は、保存されていないデータが含まれていても強制的に終了します
Lawand

それはあなたが尋ねたものではありません-それが応答しない場合、シャットダウンしようとしているかどうかに関係なく、保存されていないデータは失われます
warren

申し訳ありませんが、「ビジープログラム」と言ってはなりませんでした。保存されていないデータを含み、ビジーではないプログラムを意味します...
Lawand

1
ああ、私の答えはまだ残っています-少なくともXPの平凡なインストールでは、シャットダウンを実行したが、たとえば、Wordで保存されていないドキュメントがある場合はいつでも、シャットダウンをキャンセルして、ドキュメントを保存する機会がありました(s)その後、シャットダウンプロセスを再開します
ウォーレン

数日前に私はXP SP3をインストールしましたが、システムはあなたの言うことを実行しますが、SP2ではそれができませんでした...
Lawand
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.