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?
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:
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:
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.
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.