- Display the current domain in the logon dialog and pass it to the logon routine.
- Fix wrong default domain registry value name.

svn path=/trunk/; revision=62059
This commit is contained in:
Eric Kohl 2014-02-08 21:33:13 +00:00
parent 4a8d13c7e3
commit 535049cf93
2 changed files with 13 additions and 7 deletions

View file

@ -707,6 +707,9 @@ LoggedOutWindowProc(
if (pgContext->bShutdownWithoutLogon == FALSE) if (pgContext->bShutdownWithoutLogon == FALSE)
EnableWindow(GetDlgItem(hwndDlg, IDC_SHUTDOWN), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_SHUTDOWN), FALSE);
SendDlgItemMessageW(hwndDlg, IDC_LOGON_TO, CB_ADDSTRING, 0, (LPARAM)pgContext->Domain);
SendDlgItemMessageW(hwndDlg, IDC_LOGON_TO, CB_SETCURSEL, 0, 0);
SetFocus(GetDlgItem(hwndDlg, pgContext->bDontDisplayLastUserName ? IDC_USERNAME : IDC_PASSWORD)); SetFocus(GetDlgItem(hwndDlg, pgContext->bDontDisplayLastUserName ? IDC_USERNAME : IDC_PASSWORD));
pgContext->hBitmap = LoadImage(hDllInstance, MAKEINTRESOURCE(IDI_ROSLOGO), IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR); pgContext->hBitmap = LoadImage(hDllInstance, MAKEINTRESOURCE(IDI_ROSLOGO), IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR);
@ -735,13 +738,15 @@ LoggedOutWindowProc(
{ {
case IDOK: case IDOK:
{ {
LPWSTR UserName = NULL, Password = NULL; LPWSTR UserName = NULL, Password = NULL, Domain = NULL;
INT result = WLX_SAS_ACTION_NONE; INT result = WLX_SAS_ACTION_NONE;
if (GetTextboxText(hwndDlg, IDC_USERNAME, &UserName) && *UserName == '\0') if (GetTextboxText(hwndDlg, IDC_USERNAME, &UserName) && *UserName == '\0')
break; break;
if (GetTextboxText(hwndDlg, IDC_LOGON_TO, &Domain) && *Domain == '\0')
break;
if (GetTextboxText(hwndDlg, IDC_PASSWORD, &Password) && if (GetTextboxText(hwndDlg, IDC_PASSWORD, &Password) &&
DoLoginTasks(pgContext, UserName, NULL, Password)) DoLoginTasks(pgContext, UserName, Domain, Password))
{ {
pgContext->Password = HeapAlloc(GetProcessHeap(), pgContext->Password = HeapAlloc(GetProcessHeap(),
HEAP_ZERO_MEMORY, HEAP_ZERO_MEMORY,
@ -753,6 +758,7 @@ LoggedOutWindowProc(
} }
HeapFree(GetProcessHeap(), 0, UserName); HeapFree(GetProcessHeap(), 0, UserName);
HeapFree(GetProcessHeap(), 0, Password); HeapFree(GetProcessHeap(), 0, Password);
HeapFree(GetProcessHeap(), 0, Domain);
EndDialog(hwndDlg, result); EndDialog(hwndDlg, result);
return TRUE; return TRUE;
} }

View file

@ -237,7 +237,7 @@ GetRegistrySettings(PGINA_CONTEXT pgContext)
dwSize = 256 * sizeof(WCHAR); dwSize = 256 * sizeof(WCHAR);
rc = RegQueryValueExW(hKey, rc = RegQueryValueExW(hKey,
L"DefaultDomainName", L"DefaultDomain",
NULL, NULL,
NULL, NULL,
(LPBYTE)&pgContext->Domain, (LPBYTE)&pgContext->Domain,
@ -801,7 +801,7 @@ DoAutoLogon(
LPWSTR AutoCount = NULL; LPWSTR AutoCount = NULL;
LPWSTR IgnoreShiftOverride = NULL; LPWSTR IgnoreShiftOverride = NULL;
LPWSTR UserName = NULL; LPWSTR UserName = NULL;
LPWSTR DomainName = NULL; LPWSTR Domain = NULL;
LPWSTR Password = NULL; LPWSTR Password = NULL;
BOOL result = FALSE; BOOL result = FALSE;
LONG rc; LONG rc;
@ -860,14 +860,14 @@ DoAutoLogon(
rc = ReadRegSzKey(WinLogonKey, L"DefaultUserName", &UserName); rc = ReadRegSzKey(WinLogonKey, L"DefaultUserName", &UserName);
if (rc != ERROR_SUCCESS) if (rc != ERROR_SUCCESS)
goto cleanup; goto cleanup;
rc = ReadRegSzKey(WinLogonKey, L"DefaultDomainName", &DomainName); rc = ReadRegSzKey(WinLogonKey, L"DefaultDomain", &Domain);
if (rc != ERROR_SUCCESS && rc != ERROR_FILE_NOT_FOUND) if (rc != ERROR_SUCCESS && rc != ERROR_FILE_NOT_FOUND)
goto cleanup; goto cleanup;
rc = ReadRegSzKey(WinLogonKey, L"DefaultPassword", &Password); rc = ReadRegSzKey(WinLogonKey, L"DefaultPassword", &Password);
if (rc != ERROR_SUCCESS) if (rc != ERROR_SUCCESS)
goto cleanup; goto cleanup;
result = DoLoginTasks(pgContext, UserName, DomainName, Password); result = DoLoginTasks(pgContext, UserName, Domain, Password);
if (result == TRUE) if (result == TRUE)
{ {
@ -888,7 +888,7 @@ cleanup:
HeapFree(GetProcessHeap(), 0, AutoCount); HeapFree(GetProcessHeap(), 0, AutoCount);
HeapFree(GetProcessHeap(), 0, IgnoreShiftOverride); HeapFree(GetProcessHeap(), 0, IgnoreShiftOverride);
HeapFree(GetProcessHeap(), 0, UserName); HeapFree(GetProcessHeap(), 0, UserName);
HeapFree(GetProcessHeap(), 0, DomainName); HeapFree(GetProcessHeap(), 0, Domain);
HeapFree(GetProcessHeap(), 0, Password); HeapFree(GetProcessHeap(), 0, Password);
TRACE("DoAutoLogon(): AutoLogonState = %lu, returning %d\n", TRACE("DoAutoLogon(): AutoLogonState = %lu, returning %d\n",
pgContext->AutoLogonState, result); pgContext->AutoLogonState, result);