Disabilita la chiusura automatica delle applicazioni all'arresto


8

Esiste un'alternativa di Windows XP al processo di arresto di Windows Vista che richiede all'utente di continuare o annullare l'arresto nel caso in cui alcuni programmi contengano dati non salvati?

Risposte:


10

Puoi farlo con un po 'di codice consegnando il SystemEvents.SessionEnding evento. Questo mostrerà una finestra di dialogo quando si tenta di disconnettersi o spegnersi e chiedere se si desidera annullare la disconnessione o l'arresto.

Il codice può essere compilato gratuitamente con il Visual C # 2008 Express Edition o con il Windows SDK .

Con sdk, utilizzare il seguente comando:

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

Ecco il codice:

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

    }
}

Modificare:

Fonte e exe scaricabili .


saresti una brava persona e caricare da qualche parte il "StopShutdown.exe" o inviarlo via email? (Capirei se tu dicessi di no)
Lawand


Buon lavoro, sei molto vicino: ho lasciato aperto un file non salvato e ho richiamato l'arresto dal menu di avvio, successivamente un prompt mi ​​ha chiesto se volevo annullare l'arresto ma quando ho aspettato un paio di secondi, Windows ha terminato il tuo programma ed eseguito il processo di spegnimento ...
Lawand

Sì, se vuoi che XP aspetti più a lungo, dovrai modificare i valori di registro citati in un altro post. Aggiornerò il codice ...
Scott Weinstein

In realtà voglio che XP fermi il processo di spegnimento in modo permanente (come fa Vista). Ad ogni modo la tua risposta è la più vicina finora ...
Lawand

2

Se sei disposto a fare un po 'di modifica del registro ... Inizia - & gt; Esegui - & gt; regedit

HKEY_CURRENT_USER \ Pannello di controllo \ Desktop

Assicurati che AutoEndTasks sia 0 e imposta WaitToKillAppTimeout su 20000 (il valore predefinito di 2 secondi). È possibile impostare il valore più alto se lo si desidera. C'è anche HungAppTimeout (il defalt è 5000), ma questo vale più per le applicazioni che non rispondono.


Ciò offre più tempo per chiudere correttamente le app, ma non interrompe definitivamente il processo di spegnimento ...
Lawand

0

Ogni volta che faccio un arresto su XP, se un programma è occupato, mi dà una barra di avanzamento e un'opzione per 'Fine ora' o 'Annulla'.

Facendo clic su "Annulla" si arresta il processo di spegnimento. Tuttavia, qualsiasi cosa abbia già chiuso non ritorna.

Ma mi dà il tempo di salvare ciò a cui stavo lavorando prima di riprovare l'arresto.


Ma se un programma sta rispondendo (non occupato) sarà costretto a chiudere anche se contiene dati non salvati
Lawand

non è quello che hai chiesto - se non risponde, non importa se stai provando a chiudere o no, perderai i dati non salvati
warren

Scusa, non avrei dovuto dire "programmi occupati", intendevo programmi che contengono dati non salvati e che non sono occupati ...
Lawand

1
oh, quindi la mia risposta è ancora valida - almeno sulle semplici installazioni di XP: ogni volta che ho fatto uno shutdown ma avevo, ad esempio, un doc non salvato in Word, ho avuto l'opportunità di annullare l'arresto, salvare il mio documento (s), quindi riavviare il processo di spegnimento
warren

Un paio di giorni fa ho installato XP SP3 e ora il sistema fa quello che dici, mentre con SP2 non ha ...
Lawand
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.