Deshabilitar la terminación automática de aplicaciones al apagar

8

¿Existe alguna alternativa de Windows XP al proceso de apagado de Windows Vista que indique al usuario si debe continuar o cancelar el apagado en caso de que algunos programas contengan datos no guardados?

Ley y
fuente

Respuestas:

10

Puede hacer esto con algún código entregando el evento SystemEvents.SessionEnding . Esto mostrará un cuadro de diálogo cuando intente cerrar la sesión o cerrar y preguntar si desea cancelar el cierre de sesión o el cierre.

El código se puede compilar de forma gratuita con Visual C # 2008 Express Edition o con el SDK de Windows .

Con el SDK, use el siguiente comando:

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

Aquí está el código:

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

    }
}

Editar:

Fuente descargable y exe .

Scott Weinstein
fuente
¿Serías una buena persona y subirías el "StopShutdown.exe" a algún lugar o me lo enviarías por correo electrónico? (Lo entendería si
dijeras que
Buen trabajo, te acercaste mucho: dejé un archivo sin guardar abierto, luego invoqué el apagado desde el menú de inicio, luego un mensaje me preguntó si quería cancelar el apagado, pero cuando esperé un par de segundos, Windows finalizó tu programa y ejecutó el proceso de apagado ...
Lawand
Sí, si desea que XP espere más, deberá modificar los valores de registro mencionados en otra publicación. Actualizaré el código ...
Scott Weinstein
En realidad, quiero que XP detenga el proceso de apagado de forma permanente (como lo hace Vista). De todos modos, su respuesta es la más cercana hasta ahora ...
Lawand
2

Si está dispuesto a hacer una pequeña edición del registro ... Inicio -> Ejecutar -> regedit

HKEY_CURRENT_USER \ Panel de control \ Escritorio

Asegúrese de que AutoEndTasks sea 0 y configure WaitToKillAppTimeout en 20000 (el valor predeterminado de 2 segundos). Puede establecer el valor más alto si lo desea. También hay HungAppTimeout (la defalt es 5000), pero eso se aplica más a las aplicaciones que no responden.

Penetración
fuente
Esto da más tiempo para que las aplicaciones se cierren correctamente, pero no se detiene de forma permanente el proceso de apagado ...
Lawand
0

Cada vez que hago un apagado en XP, si un programa está ocupado, me da una barra de progreso y una opción para 'Finalizar ahora' o 'Cancelar'.

Al hacer clic en 'Cancelar' se detiene el proceso de apagado. Sin embargo, lo que sea que ya se haya apagado no vuelve a aparecer.

Pero sí me da tiempo para guardar lo que estaba trabajando antes de volver a intentar el cierre.

madriguera
fuente
Pero si un programa está respondiendo (no ocupado) que se verán obligados a cerrar, incluso si contiene datos no guardados
Lawand
eso no es lo que pediste: si no responde, no importa si estás intentando cerrar o no, perderás datos no guardados
Warren
Lo siento, no debería haber dicho "programas ocupado", me refiero a los programas que contienen un conjunto de datos no guardados y que no están ocupados ...
Lawand
1
oh, entonces mi respuesta sigue en pie, al menos en las instalaciones simples de XP: cada vez que hice un cierre pero tuve, por ejemplo, un documento no guardado en Word, tuve la oportunidad de cancelar el cierre, guardar mi documento (s) y, a continuación, reinicie el proceso de apagado
Warren
Hace unos días he instalado XP SP3 y ahora el sistema hace lo que usted dice, mientras que con SP2 no lo hizo ...
Lawand