Deaktivieren Sie die automatische Beendigung von Anwendungen beim Herunterfahren


8

Gibt es eine Windows XP-Alternative zum Herunterfahren von Windows Vista, die den Benutzer auffordert, das Herunterfahren fortzusetzen oder abzubrechen, falls einige Programme nicht gespeicherte Daten enthalten?

Antworten:


10

Sie können dies mit etwas Code tun, indem Sie das SystemEvents.SessionEnding- Ereignis übergeben. Daraufhin wird ein Dialogfeld angezeigt, wenn Sie versuchen, sich abzumelden oder herunterzufahren, und gefragt werden, ob Sie das Abmelden oder Herunterfahren abbrechen möchten.

Der Code kann kostenlos mit der Visual C # 2008 Express Edition oder mit dem Windows SDK kompiliert werden .

Verwenden Sie mit dem SDK den folgenden Befehl:

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

Hier ist der Code:

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);
        }

    }
}

Bearbeiten:

Herunterladbare Quelle und exe .


Würdest du eine nette Person sein und irgendwo die "StopShutdown.exe" hochladen oder mir eine E-Mail schicken? (Ich würde verstehen, wenn Sie nein sagten)
Lawand


Gute Arbeit, Sie sind ganz nah dran: Ich habe eine nicht gespeicherte Datei offen gelassen und dann das Herunterfahren über das Startmenü aufgerufen. Als nächstes wurde ich gefragt, ob ich das Herunterfahren abbrechen möchte, aber als ich einige Sekunden gewartet habe, hat Windows Ihr Programm beendet und ausgeführt der Abschaltvorgang ...
Lawand

Ja, wenn XP länger warten soll, müssen Sie die in einem anderen Beitrag genannten Registrierungswerte ändern. Ich werde den Code aktualisieren ...
Scott Weinstein

Eigentlich möchte ich, dass XP den Shutdown-Prozess dauerhaft stoppt (wie Vista). Wie auch immer, Ihre Antwort ist die bisher am nächsten liegende ...
Lawand

2

Wenn Sie bereit sind, ein wenig die Registrierung zu bearbeiten ... Start -> Ausführen -> regedit

HKEY_CURRENT_USER \ Systemsteuerung \ Desktop

Stellen Sie sicher, dass AutoEndTasks 0 ist, und setzen Sie WaitToKillAppTimeout auf 20000 (der Standardwert von 2 Sekunden). Sie können den Wert höher einstellen, wenn Sie möchten. Es gibt auch HungAppTimeout (die Standardeinstellung ist 5000), aber das gilt mehr für Anwendungen, die nicht reagieren.


Dies gibt mehr Zeit für das ordnungsgemäße Schließen von Apps, stoppt jedoch nicht dauerhaft das Herunterfahren ...
Lawand

0

Wenn ich unter XP herunterfahre und ein Programm ausgelastet ist, erhalte ich einen Fortschrittsbalken und die Option "Jetzt beenden" oder "Abbrechen".

Durch Klicken auf "Abbrechen" wird der Vorgang zum Herunterfahren gestoppt. Was jedoch bereits heruntergefahren wurde, wird nicht wieder angezeigt.

Aber es gibt mir Zeit, um zu speichern, woran ich gearbeitet habe, bevor ich das Herunterfahren erneut versuche.


Aber wenn ein Programm antwortet (nicht beschäftigt), muss es geschlossen werden, auch wenn es nicht gespeicherte Daten enthält
Lawand

Das haben Sie nicht gefragt - wenn es nicht reagiert, spielt es keine Rolle, ob Sie versuchen, herunterzufahren oder nicht, Sie verlieren nicht gespeicherte Daten
warren

Entschuldigung, ich hätte nicht "beschäftigt Programme" sagen sollen, ich meinte Programme, die nicht gespeicherte Daten enthalten und die nicht beschäftigt sind ...
Lawand

1
Oh, dann steht meine Antwort immer noch - zumindest bei einfachen Vanille-Installationen von XP: Jedes Mal, wenn ich ein Herunterfahren durchgeführt habe, aber beispielsweise ein nicht gespeichertes Dokument in Word hatte, hatte ich die Möglichkeit, das Herunterfahren abzubrechen und mein Dokument zu speichern (s), und starten Sie dann den Shutdown-Prozess neu
Warren

Vor ein paar Tagen habe ich XP SP3 installiert und jetzt macht das System, was Sie sagen, während es mit SP2 nicht ...
Lawand
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.