https://git.reactos.org/?p=reactos.git;a=commitdiff;h=665926d38bbf7e188111b…
commit 665926d38bbf7e188111b3a9b2f8abe9b735002f
Author: Eric Kohl <eric.kohl(a)reactos.org>
AuthorDate: Tue May 22 11:06:38 2018 +0200
Commit: Eric Kohl <eric.kohl(a)reactos.org>
CommitDate: Tue May 22 11:06:38 2018 +0200
[MSGINA] Add the IgnoreShiftOverride feature again
---
dll/win32/msgina/msgina.c | 25 ++++++++++++++++++++++---
dll/win32/msgina/msgina.h | 5 +----
2 files changed, 23 insertions(+), 7 deletions(-)
diff --git a/dll/win32/msgina/msgina.c b/dll/win32/msgina/msgina.c
index 8772df7dc1..6cb3bc5324 100644
--- a/dll/win32/msgina/msgina.c
+++ b/dll/win32/msgina/msgina.c
@@ -170,6 +170,7 @@ GetRegistrySettings(PGINA_CONTEXT pgContext)
LPWSTR lpAutoAdminLogon = NULL;
LPWSTR lpDontDisplayLastUserName = NULL;
LPWSTR lpShutdownWithoutLogon = NULL;
+ LPWSTR lpIgnoreShiftOverride = NULL;
DWORD dwDisableCAD = 0;
DWORD dwSize;
LONG rc;
@@ -226,6 +227,15 @@ GetRegistrySettings(PGINA_CONTEXT pgContext)
pgContext->bDontDisplayLastUserName = TRUE;
}
+ rc = ReadRegSzValue(hKey,
+ L"IgnoreShiftOverride",
+ &lpIgnoreShiftOverride);
+ if (rc == ERROR_SUCCESS)
+ {
+ if (wcscmp(lpIgnoreShiftOverride, L"1") == 0)
+ pgContext->bIgnoreShiftOverride = TRUE;
+ }
+
dwSize = sizeof(pgContext->UserName);
rc = RegQueryValueExW(hKey,
L"DefaultUserName",
@@ -250,6 +260,9 @@ GetRegistrySettings(PGINA_CONTEXT pgContext)
(LPBYTE)&pgContext->Password,
&dwSize);
+ if (lpIgnoreShiftOverride != NULL)
+ HeapFree(GetProcessHeap(), 0, lpIgnoreShiftOverride);
+
if (lpShutdownWithoutLogon != NULL)
HeapFree(GetProcessHeap(), 0, lpShutdownWithoutLogon);
@@ -893,9 +906,15 @@ WlxDisplaySASNotice(
if (pgContext->bAutoAdminLogon)
{
- /* Don't display the window, we want to do an automatic logon */
- pgContext->pWlxFuncs->WlxSasNotify(pgContext->hWlx,
WLX_SAS_TYPE_CTRL_ALT_DEL);
- return;
+ if (pgContext->bIgnoreShiftOverride ||
+ (GetKeyState(VK_SHIFT) >= 0))
+ {
+ /* Don't display the window, we want to do an automatic logon */
+ pgContext->pWlxFuncs->WlxSasNotify(pgContext->hWlx,
WLX_SAS_TYPE_CTRL_ALT_DEL);
+ return;
+ }
+
+ pgContext->bAutoAdminLogon = FALSE;
}
if (pgContext->bDisableCAD)
diff --git a/dll/win32/msgina/msgina.h b/dll/win32/msgina/msgina.h
index 38c975eb89..2243cb8222 100644
--- a/dll/win32/msgina/msgina.h
+++ b/dll/win32/msgina/msgina.h
@@ -28,10 +28,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(msgina);
#include "resource.h"
-/* Values for GINA_CONTEXT.AutoLogonState */
-#define AUTOLOGON_CHECK_REGISTRY 1
-#define AUTOLOGON_ONCE 2
-#define AUTOLOGON_DISABLED 3
typedef struct
{
@@ -46,6 +42,7 @@ typedef struct
BOOL bAutoAdminLogon;
BOOL bDontDisplayLastUserName;
BOOL bShutdownWithoutLogon;
+ BOOL bIgnoreShiftOverride;
ULONG nShutdownAction;