종료시 응용 프로그램 자동 종료 비활성화


8

일부 프로그램에 저장되지 않은 데이터가 포함 된 경우 사용자에게 종료를 계속할지 또는 취소할지 묻는 Windows Vista의 종료 프로세스에 대한 Windows XP 대안이 있습니까?

답변:


10

SystemEvents.SessionEnding 이벤트 를 전달하여 일부 코드로이를 수행 할 수 있습니다 . 로그 오프 또는 종료를 시도하고 로그 오프 또는 종료를 취소 할 것인지 묻는 대화 상자가 표시됩니다.

코드는 Visual C # 2008 Express Edition 또는 Windows SDK 를 사용하여 무료로 컴파일 할 수 있습니다 .

SDK와 함께 다음 명령을 사용하십시오.

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

코드는 다음과 같습니다.

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

    }
}

편집하다:

다운로드 가능한 소스 및 exe .


당신은 좋은 사람이고 "StopShutdown.exe"를 어딘가에 업로드하거나 나에게 이메일을 보내시겠습니까? (당신이
— 거절


잘하셨습니다. 저장하지 않은 파일을 연 상태에서 시작 메뉴에서 시스템 종료를 호출 한 후 시스템 종료를 취소 할 것인지 묻는 메시지가 표시되지만 몇 초 동안 기다렸을 때 Windows가 프로그램을 종료하고 수행했습니다. 종료 프로세스 ...
— Lawand

예, XP를 더 오래 기다리려면 다른 게시물에 언급 된 레지스트리 값을 수정해야합니다. 나는 ... 코드를 업데이트합니다
— 스콧 와인 스타 인에게

실제로 XP가 Vista와 같이 종료 프로세스를 영구적으로 중단하고 싶습니다. 어쨌든 당신의 대답은 지금까지 가장 가깝습니다 ...
— Lawand

2

약간의 레지스트리 편집을 원한다면 시작-> 실행-> regedit

HKEY_CURRENT_USER \ 제어판 \ 데스크탑

AutoEndTasks가 0인지 확인하고 WaitToKillAppTimeout을 20000 (기본값 2 초)으로 설정하십시오. 원하는 경우 값을 더 높게 설정할 수 있습니다. HungAppTimeout (소거는 5000)도 있지만 응답하지 않는 응용 프로그램에 더 많이 적용됩니다.


이로 인해 앱이 제대로 종료되는 데 더 많은 시간이 걸리지 만 종료 프로세스가 영구적으로 중지되지는 않습니다.
— Lawand

0

XP에서 종료 할 때마다 프로그램이 사용중인 경우 진행률 표시 줄과 '지금 종료'또는 '취소'에 대한 옵션이 표시됩니다.

'취소'를 클릭하면 종료 프로세스가 중지됩니다. 그러나 이미 종료 된 항목은 다시 나타나지 않습니다.

그러나 종료를 다시 시도하기 전에 내가하고 있던 작업을 저장할 시간을줍니다.


그러나 프로그램이 응답하지 않으면 (바쁘지 않은 경우) 저장되지 않은 데이터가 포함되어 있어도 프로그램을 종료해야합니다.
— Lawand

그것은 당신이 요구 한 것이 아닙니다-응답하지 않는다면, 당신이 셧다운을 시도하든
— warren

죄송합니다, "바쁜 프로그램"이라고
— 말해서

1
오, 그럼 내 대답은 여전히 ​​XP의 일반 바닐라 설치에서 여전히 멈 춥니 다. 종료를 완료했지만 Word에 저장되지 않은 문서가있을 때마다 종료를 취소 할 수있는 기회가 있었고 내 문서를 저장했습니다. 종료 프로세스를 다시 시작합니다
— warren

며칠 전에 나는 XP SP3을 설치했고 이제 시스템은 당신이하는 말을하지만 SP2에서는 그렇지 않았다.
— Lawand
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.