https://git.reactos.org/?p=reactos.git;a=commitdiff;h=2263547985f05efa6fff4…
commit 2263547985f05efa6fff46da5c0d8d38f8c48918
Author: Carl J. Bialorucki <cbialo2(a)outlook.com>
AuthorDate: Thu Aug 31 03:51:54 2023 -0600
Commit: GitHub <noreply(a)github.com>
CommitDate: Thu Aug 31 11:51:54 2023 +0200
[WINLOGON][MSGINA] Add emergency restart and log off features (#5629)
CORE-18958
Introduce an emergency log-off and restart feature, available when holding
down the control key and selecting "Log Off" or "Shut down" in the
MSGINA
Ctrl-Alt-Del security dialog, similar to Windows Server 2003 and newer
Windows versions.
---
base/system/winlogon/sas.c | 6 +++++-
dll/win32/msgina/gui.c | 40 ++++++++++++++++++++++++++++++++++++++--
dll/win32/msgina/lang/bg-BG.rc | 4 ++++
dll/win32/msgina/lang/cs-CZ.rc | 4 ++++
dll/win32/msgina/lang/de-DE.rc | 4 ++++
dll/win32/msgina/lang/en-US.rc | 4 ++++
dll/win32/msgina/lang/es-ES.rc | 4 ++++
dll/win32/msgina/lang/fr-FR.rc | 4 ++++
dll/win32/msgina/lang/he-IL.rc | 4 ++++
dll/win32/msgina/lang/hu-HU.rc | 4 ++++
dll/win32/msgina/lang/id-ID.rc | 4 ++++
dll/win32/msgina/lang/it-IT.rc | 4 ++++
dll/win32/msgina/lang/ja-JP.rc | 4 ++++
dll/win32/msgina/lang/no-NO.rc | 4 ++++
dll/win32/msgina/lang/pl-PL.rc | 4 ++++
dll/win32/msgina/lang/pt-PT.rc | 4 ++++
dll/win32/msgina/lang/ro-RO.rc | 4 ++++
dll/win32/msgina/lang/ru-RU.rc | 4 ++++
dll/win32/msgina/lang/sk-SK.rc | 4 ++++
dll/win32/msgina/lang/sq-AL.rc | 4 ++++
dll/win32/msgina/lang/tr-TR.rc | 4 ++++
dll/win32/msgina/lang/uk-UA.rc | 4 ++++
dll/win32/msgina/lang/zh-CN.rc | 4 ++++
dll/win32/msgina/lang/zh-HK.rc | 4 ++++
dll/win32/msgina/lang/zh-TW.rc | 4 ++++
dll/win32/msgina/resource.h | 6 ++++++
26 files changed, 141 insertions(+), 3 deletions(-)
diff --git a/base/system/winlogon/sas.c b/base/system/winlogon/sas.c
index b94663b1c55..c9675ba314d 100644
--- a/base/system/winlogon/sas.c
+++ b/base/system/winlogon/sas.c
@@ -1060,13 +1060,17 @@ DoGenericAction(
break;
case WLX_SAS_ACTION_LOGOFF: /* 0x04 */
case WLX_SAS_ACTION_SHUTDOWN: /* 0x05 */
+ case WLX_SAS_ACTION_FORCE_LOGOFF: /* 0x09 */
case WLX_SAS_ACTION_SHUTDOWN_POWER_OFF: /* 0x0a */
case WLX_SAS_ACTION_SHUTDOWN_REBOOT: /* 0x0b */
if (Session->LogonState != STATE_LOGGED_OFF)
{
+ UINT LogOffFlags = EWX_LOGOFF;
+ if (wlxAction == WLX_SAS_ACTION_FORCE_LOGOFF)
+ LogOffFlags |= EWX_FORCE;
if
(!Session->Gina.Functions.WlxIsLogoffOk(Session->Gina.Context))
break;
- if (!NT_SUCCESS(HandleLogoff(Session, EWX_LOGOFF)))
+ if (!NT_SUCCESS(HandleLogoff(Session, LogOffFlags)))
{
RemoveStatusMessage(Session);
break;
diff --git a/dll/win32/msgina/gui.c b/dll/win32/msgina/gui.c
index d46126d3c25..e48c7175864 100644
--- a/dll/win32/msgina/gui.c
+++ b/dll/win32/msgina/gui.c
@@ -11,6 +11,8 @@
#include <wingdi.h>
#include <winnls.h>
#include <winreg.h>
+#include <ndk/exfuncs.h>
+#include <ndk/setypes.h>
typedef struct _DISPLAYSTATUSMSG
{
@@ -31,6 +33,8 @@ typedef struct _LEGALNOTICEDATA
// Timer ID for the animated dialog bar.
#define IDT_BAR 1
+#define ISKEYDOWN(x) (GetKeyState(x) & 0x8000)
+
typedef struct _DLG_DATA
{
PGINA_CONTEXT pgContext;
@@ -985,12 +989,44 @@ SecurityDialogProc(
EndDialog(hwndDlg, WLX_SAS_ACTION_LOCK_WKSTA);
return TRUE;
case IDC_SECURITY_LOGOFF:
- if (OnLogOff(hwndDlg, pgContext) == IDYES)
+ if (ISKEYDOWN(VK_CONTROL))
+ {
+ if (ResourceMessageBox(pgContext,
+ hwndDlg,
+ MB_OKCANCEL | MB_ICONSTOP,
+ IDS_EMERGENCYLOGOFFTITLE,
+ IDS_EMERGENCYLOGOFF) == IDOK)
+ {
+ EndDialog(hwndDlg, WLX_SAS_ACTION_FORCE_LOGOFF);
+ }
+ }
+ else if (OnLogOff(hwndDlg, pgContext) == IDYES)
+ {
EndDialog(hwndDlg, WLX_SAS_ACTION_LOGOFF);
+ }
return TRUE;
case IDC_SECURITY_SHUTDOWN:
- if (OnShutDown(hwndDlg, pgContext) == IDOK)
+ /* Emergency restart feature */
+ if (ISKEYDOWN(VK_CONTROL))
+ {
+ if (ResourceMessageBox(pgContext,
+ hwndDlg,
+ MB_OKCANCEL | MB_ICONSTOP,
+ IDS_EMERGENCYRESTARTTITLE,
+ IDS_EMERGENCYRESTART) == IDOK)
+ {
+ BOOLEAN Old;
+
+ ERR("Emergency restarting NT...\n");
+ RtlAdjustPrivilege(SE_SHUTDOWN_PRIVILEGE, TRUE, FALSE,
&Old);
+ NtShutdownSystem(ShutdownReboot);
+ RtlAdjustPrivilege(SE_SHUTDOWN_PRIVILEGE, Old, FALSE,
&Old);
+ }
+ }
+ else if (OnShutDown(hwndDlg, pgContext) == IDOK)
+ {
EndDialog(hwndDlg, pgContext->nShutdownAction);
+ }
return TRUE;
case IDC_SECURITY_CHANGEPWD:
if (OnChangePassword(hwndDlg, pgContext))
diff --git a/dll/win32/msgina/lang/bg-BG.rc b/dll/win32/msgina/lang/bg-BG.rc
index 19ec5563b02..8e5a0237010 100644
--- a/dll/win32/msgina/lang/bg-BG.rc
+++ b/dll/win32/msgina/lang/bg-BG.rc
@@ -234,6 +234,10 @@ BEGIN
IDS_INVALIDLOGONHOURS "Вашия акаунт е временно ограничен в момента. Моля
опитайте по-късно."
IDS_INVALIDWORKSTATION "Акаунта ви е ограничен на този компютър. Моля
използвайте друг компютър."
IDS_ACCOUNTRESTRICTION "Не можете да влезете поради ограничение на
акаунта."
+ IDS_EMERGENCYLOGOFFTITLE "Log Off ReactOS"
+ IDS_EMERGENCYLOGOFF "Click OK to immediately log off. Any unsaved data will be
lost. Use this only as a last resort."
+ IDS_EMERGENCYRESTARTTITLE "Emergency restart"
+ IDS_EMERGENCYRESTART "Click OK to immediately restart. Any unsaved data will be
lost. Use this only as a last resort."
END
/* Shutdown Dialog Strings */
diff --git a/dll/win32/msgina/lang/cs-CZ.rc b/dll/win32/msgina/lang/cs-CZ.rc
index 315efc11b06..3d95fe5f051 100644
--- a/dll/win32/msgina/lang/cs-CZ.rc
+++ b/dll/win32/msgina/lang/cs-CZ.rc
@@ -239,6 +239,10 @@ BEGIN
IDS_INVALIDLOGONHOURS "Your account has time restrictions that prevent you from
logging on at this time. Please try again later."
IDS_INVALIDWORKSTATION "Your account is configured to prevent you from using
this computer. Please try another computer."
IDS_ACCOUNTRESTRICTION "Unable to log you on because of an account
restriction."
+ IDS_EMERGENCYLOGOFFTITLE "Log Off ReactOS"
+ IDS_EMERGENCYLOGOFF "Click OK to immediately log off. Any unsaved data will be
lost. Use this only as a last resort."
+ IDS_EMERGENCYRESTARTTITLE "Emergency restart"
+ IDS_EMERGENCYRESTART "Click OK to immediately restart. Any unsaved data will be
lost. Use this only as a last resort."
END
/* Shutdown Dialog Strings */
diff --git a/dll/win32/msgina/lang/de-DE.rc b/dll/win32/msgina/lang/de-DE.rc
index 9f8fe3c47f6..88eb44ed1bb 100644
--- a/dll/win32/msgina/lang/de-DE.rc
+++ b/dll/win32/msgina/lang/de-DE.rc
@@ -234,6 +234,10 @@ BEGIN
IDS_INVALIDLOGONHOURS "Ihr Konto sieht es nicht vor, dass Sie sich zu dieser
Zeit anmelden. Bitte versuchen Sie es später noch einmal."
IDS_INVALIDWORKSTATION "Ihr Konto sieht es nicht vor, dass Sie sich an diesem
Computer anmelden. Bitte melden Sie sich an einem anderen Computer an."
IDS_ACCOUNTRESTRICTION "Wegen einer Kontenbeschränkung dürfen Sie sich nicht
anmelden."
+ IDS_EMERGENCYLOGOFFTITLE "Log Off ReactOS"
+ IDS_EMERGENCYLOGOFF "Click OK to immediately log off. Any unsaved data will be
lost. Use this only as a last resort."
+ IDS_EMERGENCYRESTARTTITLE "Emergency restart"
+ IDS_EMERGENCYRESTART "Click OK to immediately restart. Any unsaved data will be
lost. Use this only as a last resort."
END
/* Shutdown Dialog Strings */
diff --git a/dll/win32/msgina/lang/en-US.rc b/dll/win32/msgina/lang/en-US.rc
index f5525052df0..68da6e2a0ff 100644
--- a/dll/win32/msgina/lang/en-US.rc
+++ b/dll/win32/msgina/lang/en-US.rc
@@ -235,6 +235,10 @@ BEGIN
IDS_INVALIDLOGONHOURS "Your account has time restrictions that prevent you from
logging on at this time. Please try again later."
IDS_INVALIDWORKSTATION "Your account is configured to prevent you from using
this computer. Please try another computer."
IDS_ACCOUNTRESTRICTION "Unable to log you on because of an account
restriction."
+ IDS_EMERGENCYLOGOFFTITLE "Log Off ReactOS"
+ IDS_EMERGENCYLOGOFF "Click OK to immediately log off. Any unsaved data will be
lost. Use this only as a last resort."
+ IDS_EMERGENCYRESTARTTITLE "Emergency restart"
+ IDS_EMERGENCYRESTART "Click OK to immediately restart. Any unsaved data will be
lost. Use this only as a last resort."
END
/* Shutdown Dialog Strings */
diff --git a/dll/win32/msgina/lang/es-ES.rc b/dll/win32/msgina/lang/es-ES.rc
index 43e75b7739b..8577228c538 100644
--- a/dll/win32/msgina/lang/es-ES.rc
+++ b/dll/win32/msgina/lang/es-ES.rc
@@ -243,6 +243,10 @@ BEGIN
IDS_INVALIDLOGONHOURS "En este momento, tu cuenta tiene restricciones horarias
para acceder. Inténtelo de nuevo más tarde."
IDS_INVALIDWORKSTATION "Su cuenta está configurada para no permitirte usar este
equipo. Inténtelo en otro equipo."
IDS_ACCOUNTRESTRICTION "Es imposible acceder porque tu cuenta tiene
restricciones."
+ IDS_EMERGENCYLOGOFFTITLE "Log Off ReactOS"
+ IDS_EMERGENCYLOGOFF "Click OK to immediately log off. Any unsaved data will be
lost. Use this only as a last resort."
+ IDS_EMERGENCYRESTARTTITLE "Emergency restart"
+ IDS_EMERGENCYRESTART "Click OK to immediately restart. Any unsaved data will be
lost. Use this only as a last resort."
END
/* Shutdown Dialog Strings */
diff --git a/dll/win32/msgina/lang/fr-FR.rc b/dll/win32/msgina/lang/fr-FR.rc
index 6618e61677f..02280e05a36 100644
--- a/dll/win32/msgina/lang/fr-FR.rc
+++ b/dll/win32/msgina/lang/fr-FR.rc
@@ -234,6 +234,10 @@ BEGIN
IDS_INVALIDLOGONHOURS "Votre compte a des restrictions temporelles qui vous
empêchent de vous connecter à cette heure-ci. Veuillez réessayer ultérieurement."
IDS_INVALIDWORKSTATION "Votre compte a été configuré pour que vous
n'utilisiez pas cet ordinateur. Veuillez réessayer depuis un autre ordinateur."
IDS_ACCOUNTRESTRICTION "Impossible de vous connecter en raison d'une
restriction sur votre compte."
+ IDS_EMERGENCYLOGOFFTITLE "Log Off ReactOS"
+ IDS_EMERGENCYLOGOFF "Click OK to immediately log off. Any unsaved data will be
lost. Use this only as a last resort."
+ IDS_EMERGENCYRESTARTTITLE "Emergency restart"
+ IDS_EMERGENCYRESTART "Click OK to immediately restart. Any unsaved data will be
lost. Use this only as a last resort."
END
/* Shutdown Dialog Strings */
diff --git a/dll/win32/msgina/lang/he-IL.rc b/dll/win32/msgina/lang/he-IL.rc
index b625be9fcce..2f36d057d49 100644
--- a/dll/win32/msgina/lang/he-IL.rc
+++ b/dll/win32/msgina/lang/he-IL.rc
@@ -234,6 +234,10 @@ BEGIN
IDS_INVALIDLOGONHOURS "Your account has time restrictions that prevent you from
logging on at this time. Please try again later."
IDS_INVALIDWORKSTATION "Your account is configured to prevent you from using
this computer. Please try another computer."
IDS_ACCOUNTRESTRICTION "Unable to log you on because of an account
restriction."
+ IDS_EMERGENCYLOGOFFTITLE "Log Off ReactOS"
+ IDS_EMERGENCYLOGOFF "Click OK to immediately log off. Any unsaved data will be
lost. Use this only as a last resort."
+ IDS_EMERGENCYRESTARTTITLE "Emergency restart"
+ IDS_EMERGENCYRESTART "Click OK to immediately restart. Any unsaved data will be
lost. Use this only as a last resort."
END
/* Shutdown Dialog Strings */
diff --git a/dll/win32/msgina/lang/hu-HU.rc b/dll/win32/msgina/lang/hu-HU.rc
index 4eaa3e0f614..4d7024a20d8 100644
--- a/dll/win32/msgina/lang/hu-HU.rc
+++ b/dll/win32/msgina/lang/hu-HU.rc
@@ -235,6 +235,10 @@ BEGIN
IDS_INVALIDLOGONHOURS "A fiókján olyan időkorlátozás van, amely miatt jelenleg
nem tud belépni. Kérjük próbálja újra később."
IDS_INVALIDWORKSTATION "A fiókja úgy van beállítva hogy nem használhatja ezt a
számítógépet. Kérjük próbálkozzon egy másik számítógéppel."
IDS_ACCOUNTRESTRICTION "Fiókkorlátozás miatt nem sikerült a
bejelentkezés."
+ IDS_EMERGENCYLOGOFFTITLE "Log Off ReactOS"
+ IDS_EMERGENCYLOGOFF "Click OK to immediately log off. Any unsaved data will be
lost. Use this only as a last resort."
+ IDS_EMERGENCYRESTARTTITLE "Emergency restart"
+ IDS_EMERGENCYRESTART "Click OK to immediately restart. Any unsaved data will be
lost. Use this only as a last resort."
END
/* Shutdown Dialog Strings */
diff --git a/dll/win32/msgina/lang/id-ID.rc b/dll/win32/msgina/lang/id-ID.rc
index 9cdbb0eecf0..fff394be844 100644
--- a/dll/win32/msgina/lang/id-ID.rc
+++ b/dll/win32/msgina/lang/id-ID.rc
@@ -234,6 +234,10 @@ BEGIN
IDS_INVALIDLOGONHOURS "Akun anda memiliki pembatasan waktu sehingga mencegah
untuk masuk saat ini. Mohon coba lagi nanti."
IDS_INVALIDWORKSTATION "Akun anda disetel untuk mencegah masuk di komputer ini.
Mohon coba gunakan komputer lain."
IDS_ACCOUNTRESTRICTION "Tidak bisa masuk karena pembatasan akun."
+ IDS_EMERGENCYLOGOFFTITLE "Log Off ReactOS"
+ IDS_EMERGENCYLOGOFF "Click OK to immediately log off. Any unsaved data will be
lost. Use this only as a last resort."
+ IDS_EMERGENCYRESTARTTITLE "Emergency restart"
+ IDS_EMERGENCYRESTART "Click OK to immediately restart. Any unsaved data will be
lost. Use this only as a last resort."
END
/* Shutdown Dialog Strings */
diff --git a/dll/win32/msgina/lang/it-IT.rc b/dll/win32/msgina/lang/it-IT.rc
index 205b59ef30c..dc7a5621c83 100644
--- a/dll/win32/msgina/lang/it-IT.rc
+++ b/dll/win32/msgina/lang/it-IT.rc
@@ -243,6 +243,10 @@ BEGIN
IDS_INVALIDLOGONHOURS "Your account has time restrictions that prevent you from
logging on at this time. Please try again later."
IDS_INVALIDWORKSTATION "Your account is configured to prevent you from using
this computer. Please try another computer."
IDS_ACCOUNTRESTRICTION "Unable to log you on because of an account
restriction."
+ IDS_EMERGENCYLOGOFFTITLE "Log Off ReactOS"
+ IDS_EMERGENCYLOGOFF "Click OK to immediately log off. Any unsaved data will be
lost. Use this only as a last resort."
+ IDS_EMERGENCYRESTARTTITLE "Emergency restart"
+ IDS_EMERGENCYRESTART "Click OK to immediately restart. Any unsaved data will be
lost. Use this only as a last resort."
END
/* Shutdown Dialog Strings */
diff --git a/dll/win32/msgina/lang/ja-JP.rc b/dll/win32/msgina/lang/ja-JP.rc
index 65f8a78d4ea..9373b73e0c5 100644
--- a/dll/win32/msgina/lang/ja-JP.rc
+++ b/dll/win32/msgina/lang/ja-JP.rc
@@ -239,6 +239,10 @@ BEGIN
IDS_INVALIDLOGONHOURS "あなたのアカウントはこの時間のログオンを妨げる時間制限があります。あとでやり直して下さい。"
IDS_INVALIDWORKSTATION
"あなたのアカウントはこのコンピュータで使えないように設定されています。他のコンピュータをお使い下さい。"
IDS_ACCOUNTRESTRICTION "アカウント制限のため、あなたはログオンできません。"
+ IDS_EMERGENCYLOGOFFTITLE "Log Off ReactOS"
+ IDS_EMERGENCYLOGOFF "Click OK to immediately log off. Any unsaved data will be
lost. Use this only as a last resort."
+ IDS_EMERGENCYRESTARTTITLE "Emergency restart"
+ IDS_EMERGENCYRESTART "Click OK to immediately restart. Any unsaved data will be
lost. Use this only as a last resort."
END
/* Shutdown Dialog Strings */
diff --git a/dll/win32/msgina/lang/no-NO.rc b/dll/win32/msgina/lang/no-NO.rc
index e78d6db9e91..e8f9d147338 100644
--- a/dll/win32/msgina/lang/no-NO.rc
+++ b/dll/win32/msgina/lang/no-NO.rc
@@ -234,6 +234,10 @@ BEGIN
IDS_INVALIDLOGONHOURS "Your account has time restrictions that prevent you from
logging on at this time. Please try again later."
IDS_INVALIDWORKSTATION "Your account is configured to prevent you from using
this computer. Please try another computer."
IDS_ACCOUNTRESTRICTION "Unable to log you on because of an account
restriction."
+ IDS_EMERGENCYLOGOFFTITLE "Log Off ReactOS"
+ IDS_EMERGENCYLOGOFF "Click OK to immediately log off. Any unsaved data will be
lost. Use this only as a last resort."
+ IDS_EMERGENCYRESTARTTITLE "Emergency restart"
+ IDS_EMERGENCYRESTART "Click OK to immediately restart. Any unsaved data will be
lost. Use this only as a last resort."
END
/* Shutdown Dialog Strings */
diff --git a/dll/win32/msgina/lang/pl-PL.rc b/dll/win32/msgina/lang/pl-PL.rc
index 2b0e05a6849..9b61dd8189b 100644
--- a/dll/win32/msgina/lang/pl-PL.rc
+++ b/dll/win32/msgina/lang/pl-PL.rc
@@ -245,6 +245,10 @@ BEGIN
IDS_INVALIDLOGONHOURS "Twoje konto ma ograniczenia czasowe, które uniemożliwiają
zalogowanie się w tej chwili. Spróbuj ponownie później."
IDS_INVALIDWORKSTATION "Twoje konto zostało skonfigurowane w sposób nie
zezwalający na używanie tego komputera. Spróbuj na innym komputerze."
IDS_ACCOUNTRESTRICTION "Nie możesz się zalogować z powodu ograniczeń
konta."
+ IDS_EMERGENCYLOGOFFTITLE "Log Off ReactOS"
+ IDS_EMERGENCYLOGOFF "Click OK to immediately log off. Any unsaved data will be
lost. Use this only as a last resort."
+ IDS_EMERGENCYRESTARTTITLE "Emergency restart"
+ IDS_EMERGENCYRESTART "Click OK to immediately restart. Any unsaved data will be
lost. Use this only as a last resort."
END
/* Shutdown Dialog Strings */
diff --git a/dll/win32/msgina/lang/pt-PT.rc b/dll/win32/msgina/lang/pt-PT.rc
index 52d369e2600..db570360cca 100644
--- a/dll/win32/msgina/lang/pt-PT.rc
+++ b/dll/win32/msgina/lang/pt-PT.rc
@@ -235,6 +235,10 @@ BEGIN
IDS_INVALIDLOGONHOURS "A sua conta tem restrições de horário que impedem o
início de sessão no momento. Por favor, tente novamente mais tarde."
IDS_INVALIDWORKSTATION "A sua conta está configurada para impedir que use este
computador. Por favor, tente outro computador."
IDS_ACCOUNTRESTRICTION "Não é possível iniciar sessão devido a uma restrição de
conta."
+ IDS_EMERGENCYLOGOFFTITLE "Log Off ReactOS"
+ IDS_EMERGENCYLOGOFF "Click OK to immediately log off. Any unsaved data will be
lost. Use this only as a last resort."
+ IDS_EMERGENCYRESTARTTITLE "Emergency restart"
+ IDS_EMERGENCYRESTART "Click OK to immediately restart. Any unsaved data will be
lost. Use this only as a last resort."
END
/* Shutdown Dialog Strings */
diff --git a/dll/win32/msgina/lang/ro-RO.rc b/dll/win32/msgina/lang/ro-RO.rc
index 277ff7d38cd..cfbc268afd6 100644
--- a/dll/win32/msgina/lang/ro-RO.rc
+++ b/dll/win32/msgina/lang/ro-RO.rc
@@ -243,6 +243,10 @@ BEGIN
IDS_INVALIDLOGONHOURS "Contul dumneavoastră are restricții de timp care vă
împiedică să vă conectați în acest moment. Încercați mai târziu."
IDS_INVALIDWORKSTATION "Contul dumneavoastră este configurat pentru a vă preveni
în a folosi acest calculator. Încercați la alt calculator."
IDS_ACCOUNTRESTRICTION "Eșec în conectarea dumneavoastră din cauza unei
restricții a contului."
+ IDS_EMERGENCYLOGOFFTITLE "Log Off ReactOS"
+ IDS_EMERGENCYLOGOFF "Click OK to immediately log off. Any unsaved data will be
lost. Use this only as a last resort."
+ IDS_EMERGENCYRESTARTTITLE "Emergency restart"
+ IDS_EMERGENCYRESTART "Click OK to immediately restart. Any unsaved data will be
lost. Use this only as a last resort."
END
/* Shutdown Dialog Strings */
diff --git a/dll/win32/msgina/lang/ru-RU.rc b/dll/win32/msgina/lang/ru-RU.rc
index 17140ab8746..7db4abd7ad6 100644
--- a/dll/win32/msgina/lang/ru-RU.rc
+++ b/dll/win32/msgina/lang/ru-RU.rc
@@ -236,6 +236,10 @@ BEGIN
IDS_INVALIDLOGONHOURS "Your account has time restrictions that prevent you from
logging on at this time. Please try again later."
IDS_INVALIDWORKSTATION "Your account is configured to prevent you from using
this computer. Please try another computer."
IDS_ACCOUNTRESTRICTION "Unable to log you on because of an account
restriction."
+ IDS_EMERGENCYLOGOFFTITLE "Log Off ReactOS"
+ IDS_EMERGENCYLOGOFF "Click OK to immediately log off. Any unsaved data will be
lost. Use this only as a last resort."
+ IDS_EMERGENCYRESTARTTITLE "Emergency restart"
+ IDS_EMERGENCYRESTART "Click OK to immediately restart. Any unsaved data will be
lost. Use this only as a last resort."
END
/* Shutdown Dialog Strings */
diff --git a/dll/win32/msgina/lang/sk-SK.rc b/dll/win32/msgina/lang/sk-SK.rc
index 68ff7b1f6f4..ba9ad960970 100644
--- a/dll/win32/msgina/lang/sk-SK.rc
+++ b/dll/win32/msgina/lang/sk-SK.rc
@@ -239,6 +239,10 @@ BEGIN
IDS_INVALIDLOGONHOURS "Your account has time restrictions that prevent you from
logging on at this time. Please try again later."
IDS_INVALIDWORKSTATION "Your account is configured to prevent you from using
this computer. Please try another computer."
IDS_ACCOUNTRESTRICTION "Unable to log you on because of an account
restriction."
+ IDS_EMERGENCYLOGOFFTITLE "Log Off ReactOS"
+ IDS_EMERGENCYLOGOFF "Click OK to immediately log off. Any unsaved data will be
lost. Use this only as a last resort."
+ IDS_EMERGENCYRESTARTTITLE "Emergency restart"
+ IDS_EMERGENCYRESTART "Click OK to immediately restart. Any unsaved data will be
lost. Use this only as a last resort."
END
/* Shutdown Dialog Strings */
diff --git a/dll/win32/msgina/lang/sq-AL.rc b/dll/win32/msgina/lang/sq-AL.rc
index acad6315c7b..9d5cb36dfcb 100644
--- a/dll/win32/msgina/lang/sq-AL.rc
+++ b/dll/win32/msgina/lang/sq-AL.rc
@@ -238,6 +238,10 @@ BEGIN
IDS_INVALIDLOGONHOURS "Your account has time restrictions that prevent you from
logging on at this time. Please try again later."
IDS_INVALIDWORKSTATION "Your account is configured to prevent you from using
this computer. Please try another computer."
IDS_ACCOUNTRESTRICTION "Unable to log you on because of an account
restriction."
+ IDS_EMERGENCYLOGOFFTITLE "Log Off ReactOS"
+ IDS_EMERGENCYLOGOFF "Click OK to immediately log off. Any unsaved data will be
lost. Use this only as a last resort."
+ IDS_EMERGENCYRESTARTTITLE "Emergency restart"
+ IDS_EMERGENCYRESTART "Click OK to immediately restart. Any unsaved data will be
lost. Use this only as a last resort."
END
/* Shutdown Dialog Strings */
diff --git a/dll/win32/msgina/lang/tr-TR.rc b/dll/win32/msgina/lang/tr-TR.rc
index 4ecb4df264a..88e3ca86df7 100644
--- a/dll/win32/msgina/lang/tr-TR.rc
+++ b/dll/win32/msgina/lang/tr-TR.rc
@@ -236,6 +236,10 @@ BEGIN
IDS_INVALIDLOGONHOURS "Hesabınızda şu anda oturum açmanızı engelleyen zaman
kısıtlamaları var. Lütfen daha sonra tekrar deneyiniz."
IDS_INVALIDWORKSTATION "Hesabınız, bu bilgisayarı kullanmanızı engelleyecek
şekilde yapılandırıldı. Lütfen başka bir bilgisayar deneyiniz."
IDS_ACCOUNTRESTRICTION "Hesap kısıtlaması nedeniyle oturum açılamıyor."
+ IDS_EMERGENCYLOGOFFTITLE "Log Off ReactOS"
+ IDS_EMERGENCYLOGOFF "Click OK to immediately log off. Any unsaved data will be
lost. Use this only as a last resort."
+ IDS_EMERGENCYRESTARTTITLE "Emergency restart"
+ IDS_EMERGENCYRESTART "Click OK to immediately restart. Any unsaved data will be
lost. Use this only as a last resort."
END
/* Shutdown Dialog Strings */
diff --git a/dll/win32/msgina/lang/uk-UA.rc b/dll/win32/msgina/lang/uk-UA.rc
index 068edc742c1..d7306e19178 100644
--- a/dll/win32/msgina/lang/uk-UA.rc
+++ b/dll/win32/msgina/lang/uk-UA.rc
@@ -242,6 +242,10 @@ BEGIN
IDS_INVALIDLOGONHOURS "Ваш профіль має обмеження часу, через що ви не можете
зайти зараз. Будь-ласка, спробуйте пізніше."
IDS_INVALIDWORKSTATION "Ваш профіль налаштовано так, що ви не можете
користуватись цим комп'ютером. Спробуйте інший комп'ютер."
IDS_ACCOUNTRESTRICTION "Не вдалось ввійти через обмеження профілю."
+ IDS_EMERGENCYLOGOFFTITLE "Log Off ReactOS"
+ IDS_EMERGENCYLOGOFF "Click OK to immediately log off. Any unsaved data will be
lost. Use this only as a last resort."
+ IDS_EMERGENCYRESTARTTITLE "Emergency restart"
+ IDS_EMERGENCYRESTART "Click OK to immediately restart. Any unsaved data will be
lost. Use this only as a last resort."
END
/* Shutdown Dialog Strings */
diff --git a/dll/win32/msgina/lang/zh-CN.rc b/dll/win32/msgina/lang/zh-CN.rc
index 6c94954edfb..023eeb479e7 100644
--- a/dll/win32/msgina/lang/zh-CN.rc
+++ b/dll/win32/msgina/lang/zh-CN.rc
@@ -243,6 +243,10 @@ BEGIN
IDS_INVALIDLOGONHOURS "您的账户具有的时间限制阻止您现在登录。请稍后再试。"
IDS_INVALIDWORKSTATION "您的账户设置阻止了您在这台计算机登录。请在另一台计算机尝试登录。"
IDS_ACCOUNTRESTRICTION "您的账户由于账户限制而不能登录。"
+ IDS_EMERGENCYLOGOFFTITLE "Log Off ReactOS"
+ IDS_EMERGENCYLOGOFF "Click OK to immediately log off. Any unsaved data will be
lost. Use this only as a last resort."
+ IDS_EMERGENCYRESTARTTITLE "Emergency restart"
+ IDS_EMERGENCYRESTART "Click OK to immediately restart. Any unsaved data will be
lost. Use this only as a last resort."
END
/* Shutdown Dialog Strings */
diff --git a/dll/win32/msgina/lang/zh-HK.rc b/dll/win32/msgina/lang/zh-HK.rc
index a5efae24eb7..19c95103c7e 100644
--- a/dll/win32/msgina/lang/zh-HK.rc
+++ b/dll/win32/msgina/lang/zh-HK.rc
@@ -242,6 +242,10 @@ BEGIN
IDS_INVALIDLOGONHOURS "由於您的帳户有時間限制,因此目前無法讓您登入。請稍候再試一次。"
IDS_INVALIDWORKSTATION "您的帳户已設定為不能使用這個電腦登入。請使用其他電腦登入。"
IDS_ACCOUNTRESTRICTION "由於您的帳户的限制,因此無法讓您登入。"
+ IDS_EMERGENCYLOGOFFTITLE "Log Off ReactOS"
+ IDS_EMERGENCYLOGOFF "Click OK to immediately log off. Any unsaved data will be
lost. Use this only as a last resort."
+ IDS_EMERGENCYRESTARTTITLE "Emergency restart"
+ IDS_EMERGENCYRESTART "Click OK to immediately restart. Any unsaved data will be
lost. Use this only as a last resort."
END
/* Shutdown Dialog Strings */
diff --git a/dll/win32/msgina/lang/zh-TW.rc b/dll/win32/msgina/lang/zh-TW.rc
index d89e8d9d7bc..a5f762c3054 100644
--- a/dll/win32/msgina/lang/zh-TW.rc
+++ b/dll/win32/msgina/lang/zh-TW.rc
@@ -242,6 +242,10 @@ BEGIN
IDS_INVALIDLOGONHOURS "由於您的帳戶有時間限制,因此目前無法讓您登入。請稍候再試一次。"
IDS_INVALIDWORKSTATION "您的帳戶已設定為不能使用這個電腦登入。請使用其他電腦登入。"
IDS_ACCOUNTRESTRICTION "由於您的帳戶的限制,因此無法讓您登入。"
+ IDS_EMERGENCYLOGOFFTITLE "Log Off ReactOS"
+ IDS_EMERGENCYLOGOFF "Click OK to immediately log off. Any unsaved data will be
lost. Use this only as a last resort."
+ IDS_EMERGENCYRESTARTTITLE "Emergency restart"
+ IDS_EMERGENCYRESTART "Click OK to immediately restart. Any unsaved data will be
lost. Use this only as a last resort."
END
/* Shutdown Dialog Strings */
diff --git a/dll/win32/msgina/resource.h b/dll/win32/msgina/resource.h
index 5020c6dfb7d..18fac198638 100644
--- a/dll/win32/msgina/resource.h
+++ b/dll/win32/msgina/resource.h
@@ -122,3 +122,9 @@
#define IDS_SHUTDOWN_RESTART_DESC 50007
#define IDS_SHUTDOWN_SLEEP_DESC 50008
#define IDS_SHUTDOWN_HIBERNATE_DESC 50009
+
+/* Emergency log off and restart */
+#define IDS_EMERGENCYLOGOFFTITLE 50010
+#define IDS_EMERGENCYLOGOFF 50011
+#define IDS_EMERGENCYRESTARTTITLE 50012
+#define IDS_EMERGENCYRESTART 50013