शटडाउन पर आवेदनों की स्वचालित समाप्ति को अक्षम करें


8

क्या विंडोज विस्टा की शटडाउन प्रक्रिया के लिए कोई विंडोज एक्सपी विकल्प है जो उपयोगकर्ता को संकेत देता है कि क्या कुछ प्रोग्राम में बिना सहेजे डेटा होने की स्थिति में शटडाउन जारी या रद्द करना है?

जवाबों:


10

आप SystemEvents.SessionEnding इवेंट को सौंपकर कुछ कोड के साथ ऐसा कर सकते हैं । जब आप लॉगऑफ़ या शटडाउन करने का प्रयास करेंगे तो यह एक संवाद बॉक्स दिखाएगा और पूछेगा कि क्या आप लॉगऑफ़ या शटडाउन को रद्द करना चाहते हैं।

कोड को विजुअल C # 2008 एक्सप्रेस संस्करण या विंडोज़ एसडीके के साथ मुफ्त में संकलित किया जा सकता है ।

एसडीके के साथ, निम्नलिखित कमांड का उपयोग करें:

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" को कहीं अपलोड करेंगे या मुझे ईमेल करेंगे? (अगर आप नहीं कहा तो मैं समझ
जाऊंगा


अच्छा काम, आप वास्तव में बंद हो गए: मैंने एक बिना सहेजे फ़ाइल को खुला छोड़ दिया, फिर मैंने स्टार्ट मेन्यू से शटडाउन का आह्वान किया, अगले ही पल मैंने पूछा कि क्या मैं शटडाउन रद्द करना चाहता हूं, लेकिन जब मैंने कुछ सेकंड के लिए इंतजार किया, तो विंडोज ने आपका कार्यक्रम समाप्त कर दिया। शटडाउन प्रक्रिया ...
लॉन्ड

हां, यदि आप चाहते हैं कि XP ​​अधिक प्रतीक्षा करे, तो आपको किसी अन्य पोस्ट में उल्लिखित रजिस्ट्री मान को संशोधित करना होगा। मैं कोड अपडेट करूंगा ...
स्कॉट विंस्टीन

वास्तव में मैं चाहता हूं कि XP ​​शटडाउन प्रक्रिया को स्थायी रूप से रोक दे (जैसे विस्टा करता है)। वैसे भी आपका जवाब अब तक सबसे करीब है ...
लॉन्ड

2

यदि आप थोड़ा रजिस्ट्री संपादन करने के लिए तैयार हैं ... प्रारंभ -> भागो -> regedit

HKEY_CURRENT_USER \ कंट्रोल पैनल \ डेस्कटॉप

सुनिश्चित करें कि AutoEndTasks 0 है, और WaitToKillAppTimeout को 20000 (2 सेकंड का डिफ़ॉल्ट मान) सेट करें। आप चाहें तो मूल्य अधिक सेट कर सकते हैं। त्रिशंकु टाइमआउट (डिफाल्ट 5000 है) भी है, लेकिन यह उन अनुप्रयोगों के लिए अधिक लागू होता है जो प्रतिक्रिया नहीं दे रहे हैं।


यह ऐप्स को ठीक से बंद होने के लिए अधिक समय देता है, लेकिन यह स्थायी रूप से शटडाउन प्रक्रिया को बंद नहीं करता है ...
लॉन्ड

0

जब भी मैं XP पर शटडाउन करता हूं, यदि कोई कार्यक्रम व्यस्त है, तो यह मुझे एक प्रगति बार और 'अभी समाप्त' या 'रद्द' करने का विकल्प देता है।

'रद्द' पर क्लिक करने से शटडाउन प्रक्रिया बंद हो जाती है। हालाँकि, जो भी पहले से ही बंद है वह वापस नहीं आया है।

लेकिन यह मुझे उस समय को बचाने का समय देता है जो मैं बंद के पुन: प्रयास करने से पहले काम कर रहा था।


लेकिन अगर कोई प्रोग्राम जवाब दे रहा है (व्यस्त नहीं है) तो उसे बंद करने के लिए मजबूर किया जाएगा भले ही उसमें बिना सहेजा गया डेटा हो
Lawand

यह नहीं है कि आपने क्या पूछा - यदि यह जवाब नहीं दे रहा है, तो इससे कोई फर्क नहीं पड़ता कि आप बंद करने की कोशिश कर रहे हैं या नहीं, आप बिना डेटा खोए
वॉरेन

क्षमा करें, मुझे "व्यस्त कार्यक्रम" नहीं कहना चाहिए था, मेरा मतलब था कि ऐसे प्रोग्राम जिनमें एक सहेजे न गए डेटा हैं और वे व्यस्त नहीं हैं ...
लॉन्ड

1
ओह, तो मेरा जवाब अभी भी खड़ा है - कम से कम XP के सादे-वेनिला इंस्टॉलेशन पर: किसी भी समय मैंने शटडाउन किया है, लेकिन उदाहरण के लिए, वर्ड में एक अनसोल्ड डॉक, मुझे शटडाउन को रद्द करने का अवसर मिला, अपने डॉक्स को बचाओ (s), और फिर शटडाउन प्रक्रिया को फिर से शुरू करें
वॉरेन

कुछ दिनों पहले मैंने XP SP3 स्थापित किया था और अब सिस्टम वही करता है जो आप कहते हैं, जबकि SP2 के साथ यह नहीं था ...
Lawand
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.