উত্তর:
আপনি সিস্টেম কোডগুলি সেশন এন্ডিং ইভেন্টটি হস্তান্তর করে কিছু কোড দিয়ে এটি করতে পারেন । আপনি লগঅফ বা শাটডাউন করার চেষ্টা করার সময় এটি একটি ডায়ালগ বক্স প্রদর্শন করবে এবং আপনি লগঅফ বা শাটডাউন বাতিল করতে চান কিনা তা জিজ্ঞাসা করবে।
কোডটি ভিজ্যুয়াল সি # ২০০৮ এক্সপ্রেস সংস্করণ বা উইন্ডোজ এসডিকে দিয়ে বিনামূল্যে সংকলন করা যেতে পারে ।
এসডিকে দিয়ে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
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);
}
}
}
সম্পাদনা:
আপনি যদি সামান্য রেজিস্ট্রি সম্পাদনা করতে ইচ্ছুক হন ... -> চালান -> রিজেডিট শুরু করুন
HKEY_CURRENT_USER \ কন্ট্রোল প্যানেল \ ডেস্কটপ
অটোএন্ডটাস্কগুলি 0 হয় তা নিশ্চিত করুন এবং 20000 (2 সেকেন্ডের ডিফল্ট মান) এ ওয়েটটোকিল অ্যাপটাইমআউট সেট করুন। আপনি যদি চান তবে মানটি আরও সেট করতে পারেন। হ্যাংঅ্যাপটাইমআউটও রয়েছে (ডিফল্টটি 5000 টি) তবে এটি এমন অ্যাপ্লিকেশনগুলিতে বেশি প্রয়োগ করে যা সাড়া দিচ্ছে না।
আমি যখনই এক্সপি-তে শাটডাউন করি, কোনও প্রোগ্রাম যদি ব্যস্ত থাকে তবে এটি আমাকে একটি অগ্রগতি বার এবং 'এখনই শেষ' বা 'বাতিল' করার বিকল্প দেয়।
'বাতিল' ক্লিক করলে শাটডাউন প্রক্রিয়া বন্ধ হয়ে যায়। যাইহোক, এটি ইতিমধ্যে শাটডাউন যা আছে তা আর ফিরে আসবে না।
তবে শাটডাউনটি পুনরায় চেষ্টা করার আগে আমি যা কাজ করেছিলাম তা সংরক্ষণ করার জন্য এটি আমাকে সময় দেয় না।