- WlxDisplaySASNotice: Do not try an auto admin logon here. Check for auto admin logon instead and let WlxLoggedOutSAS do the logon stuff.

[WINLOGON]
- Avoid posting two SAS notification messages when winlogon is started up.

svn path=/trunk/; revision=61587
This commit is contained in:
Eric Kohl 2014-01-11 20:47:41 +00:00
parent f0ecb9c0cb
commit e7e1ec28e5
2 changed files with 47 additions and 3 deletions

View file

@ -845,7 +845,10 @@ DoGenericAction(
Session->Gina.Functions.WlxDisplaySASNotice(Session->Gina.Context);
break;
case WLX_SAS_ACTION_NONE: /* 0x02 */
Session->Gina.Functions.WlxDisplaySASNotice(Session->Gina.Context);
if (Session->LogonState == STATE_LOGGED_OFF)
{
Session->Gina.Functions.WlxDisplaySASNotice(Session->Gina.Context);
}
break;
case WLX_SAS_ACTION_LOCK_WKSTA: /* 0x03 */
if (Session->Gina.Functions.WlxIsLockOk(Session->Gina.Context))
@ -919,7 +922,7 @@ DispatchSAS(
case WLX_SAS_TYPE_TIMEOUT: /* 0x00 */
{
Session->Gina.Functions.WlxDisplaySASNotice(Session->Gina.Context);
break;
return;
}
default:
{

View file

@ -572,6 +572,47 @@ cleanup:
return FALSE;
}
static
BOOL
CheckAutoAdminLogon(
IN PGINA_CONTEXT pgContext)
{
HKEY WinLogonKey = NULL;
LPWSTR AutoLogon = NULL;
BOOL result = FALSE;
LONG rc;
if (pgContext->AutoLogonState == AUTOLOGON_DISABLED)
return FALSE;
rc = RegOpenKeyExW(HKEY_LOCAL_MACHINE,
L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\WinLogon",
0,
KEY_QUERY_VALUE,
&WinLogonKey);
if (rc != ERROR_SUCCESS)
goto cleanup;
rc = ReadRegSzKey(WinLogonKey,
L"AutoAdminLogon",
&AutoLogon);
if (rc != ERROR_SUCCESS)
goto cleanup;
if (wcscmp(AutoLogon, L"1") == 0)
result = TRUE;
cleanup:
if (WinLogonKey != NULL)
RegCloseKey(WinLogonKey);
HeapFree(GetProcessHeap(), 0, AutoLogon);
return result;
}
static BOOL
DoAutoLogon(
IN PGINA_CONTEXT pgContext)
@ -685,7 +726,7 @@ WlxDisplaySASNotice(
return;
}
if (DoAutoLogon(pgContext))
if (CheckAutoAdminLogon(pgContext))
{
/* Don't display the window, we want to do an automatic logon */
pgContext->AutoLogonState = AUTOLOGON_ONCE;