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?

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 .


¿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.


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.


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.