احصل على تسجيل الخروج من النظام
سؤال
أقوم بعمل تطبيق يستخدم لمسح ملفات TEMP وتاريخ الخ، عند تسجيل الخروج المستخدم. إذا كيف يمكنني معرفة ما إذا كان النظام ذاهب إلى تسجيل الخروج (في C #)؟
المحلول
هناك عقار في بيئة الطبقة التي تحكي عنها إذا بدأت عملية الإغلاق:
Environment.HasShutDownStarted
ولكن بعد بعض googling اكتشفت أن هذا قد يكون مساعدتك لك:
using Microsoft.Win32;
//during init of your application bind to this event
SystemEvents.SessionEnding +=
new SessionEndingEventHandler(SystemEvents_SessionEnding);
void SystemEvents_SessionEnding(object sender, SessionEndingEventArgs e)
{
if (Environment.HasShutdownStarted)
{
//Tackle Shutdown
}
else
{
//Tackle log off
}
}
ولكن إذا كنت ترغب فقط في مسح ملف TEMP، فما أعتقد أن التمييز بين الإغلاق أو تسجيل الخروج ليس من أي نتيجة لك.
نصائح أخرى
إذا كنت بحاجة خصيصا إلى حدث تسجيل الدخول، فيمكنك تعديل التعليمات البرمجية المتوفرة في إجابة TheVillageIdiot على النحو التالي:
using Microsoft.Win32;
//during init of your application bind to this event
SystemEvents.SessionEnding +=
new SessionEndingEventHandler(SystemEvents_SessionEnding);
void SystemEvents_SessionEnding(object sender, SessionEndingEventArgs e)
{
if (e.Reason == SessionEndReasons.Logoff)
{
// insert your code here
}
}
اذا كان لديك نموذج ويندوز, ، يمكنك التعامل مع FormClosing
الحدث، ثم تحقق e.CloseReason
قيمة ENUM لتحديد ما إذا كان يساوي CloseReason.WindowsShutDown
.
private void FormMain_FormClosing(object sender, FormClosingEventArgs e)
{
if (e.CloseReason == CloseReason.WindowsShutDown)
{
// Your code here
}
}
لا تنتمي إلى StackOverflow