From 665926d38bbf7e188111b3a9b2f8abe9b735002f Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Tue, 22 May 2018 11:06:38 +0200 Subject: [PATCH] [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 8772df7dc10..6cb3bc53242 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 38c975eb897..2243cb8222f 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;