Exemplo n.º 1
0
static VOID
TUIDisplaySASNotice(
    IN OUT PGINA_CONTEXT pgContext)
{
    TRACE("TUIDisplaySASNotice()\n");

    UNREFERENCED_PARAMETER(pgContext);

    DisplayResourceText(IDS_LOGGEDOUTSAS, TRUE);
    DisplayResourceText(IDS_PRESSCTRLALTDELETE, TRUE);
}
Exemplo n.º 2
0
static INT
TUILockedSAS(
	IN OUT PGINA_CONTEXT pgContext)
{
	HANDLE hToken;
	WCHAR UserName[256];
	WCHAR Password[256];

	TRACE("TUILockedSAS()\n");

	UNREFERENCED_PARAMETER(pgContext);

	if (!DisplayResourceText(IDS_LOGGEDOUTSAS, TRUE))
		return WLX_SAS_ACTION_UNLOCK_WKSTA;

	/* Ask the user for credentials */
	if (!ReadString(IDS_ASKFORUSER, UserName, 256, TRUE))
		return WLX_SAS_ACTION_NONE;
	if (!ReadString(IDS_ASKFORPASSWORD, Password, 256, FALSE))
		return WLX_SAS_ACTION_NONE;

	if (!LogonUserW(UserName, NULL, Password,
		LOGON32_LOGON_UNLOCK,
		LOGON32_PROVIDER_DEFAULT,
		&hToken))
	{
		TRACE("LogonUserW() failed\n");
		return WLX_SAS_ACTION_NONE;
	}
	CloseHandle(hToken);
	return WLX_SAS_ACTION_UNLOCK_WKSTA;
}
Exemplo n.º 3
0
static INT
TUILockedSAS(
    IN OUT PGINA_CONTEXT pgContext)
{
    HANDLE hToken;
    WCHAR UserName[256];
    WCHAR Password[256];
    NTSTATUS SubStatus;
    NTSTATUS Status;

    TRACE("TUILockedSAS()\n");

    UNREFERENCED_PARAMETER(pgContext);

    if (!DisplayResourceText(IDS_LOGGEDOUTSAS, TRUE))
        return WLX_SAS_ACTION_UNLOCK_WKSTA;

    /* Ask the user for credentials */
    if (!ReadString(IDS_ASKFORUSER, UserName, _countof(UserName), TRUE))
        return WLX_SAS_ACTION_NONE;
    if (!ReadString(IDS_ASKFORPASSWORD, Password, _countof(Password), FALSE))
        return WLX_SAS_ACTION_NONE;

    Status = ConnectToLsa(pgContext);
    if (!NT_SUCCESS(Status))
    {
        WARN("ConnectToLsa() failed\n");
        return WLX_SAS_ACTION_NONE;
    }

    Status = MyLogonUser(pgContext->LsaHandle,
                         pgContext->AuthenticationPackage,
                         UserName,
                         NULL,
                         Password,
                         &hToken,
                         &SubStatus);
    if (!NT_SUCCESS(Status))
    {
        WARN("MyLogonUser() failed\n");
        return WLX_SAS_ACTION_NONE;
    }

    CloseHandle(hToken);
    return WLX_SAS_ACTION_UNLOCK_WKSTA;
}
Exemplo n.º 4
0
static BOOL
ReadString(
    IN UINT uIdResourcePrompt,
    IN OUT PWSTR Buffer,
    IN DWORD BufferLength,
    IN BOOL ShowString)
{
    DWORD count, i;
    WCHAR charToDisplay[] = { 0, UNICODE_NULL };

    if (!SetConsoleMode(GetStdHandle(STD_INPUT_HANDLE), 0))
        return FALSE;

    if (!FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE)))
        return FALSE;

    if (!DisplayResourceText(uIdResourcePrompt, FALSE))
        return FALSE;

    i = 0;
    for (;;)
    {
        WCHAR readChar;
        if (!ReadConsoleW(GetStdHandle(STD_INPUT_HANDLE), &readChar, 1, &count, NULL))
            return FALSE;
        if (readChar == '\r' || readChar == '\n')
        {
            /* End of string */
            charToDisplay[0] = L'\n';
            WriteConsoleW(
                GetStdHandle(STD_OUTPUT_HANDLE),
                charToDisplay,
                wcslen(charToDisplay),
                &count,
                NULL);
            break;
        }
        if (ShowString)
        {
            /* Display the char */
            charToDisplay[0] = readChar;
            WriteConsoleW(
                GetStdHandle(STD_OUTPUT_HANDLE),
                charToDisplay,
                wcslen(charToDisplay),
                &count,
                NULL);
        }
        Buffer[i++] = readChar;
        /* FIXME: buffer overflow if the user writes too many chars! */
        UNREFERENCED_PARAMETER(BufferLength);
        /* FIXME: handle backspace */
    }
    Buffer[i] = UNICODE_NULL;

    if (!ShowString)
    {
        /* Still display the \n */
        static LPCWSTR newLine = L"\n";
        DWORD result;
        WriteConsoleW(
            GetStdHandle(STD_OUTPUT_HANDLE),
            newLine,
            wcslen(newLine),
            &result,
            NULL);
    }
    return TRUE;
}