#include <windows.h>
#include <stdio.h>
#include <lsass/ntsecapi.h>
-
#include <wchar.h>
-#define DBG
+#include "setup.h"
+
+#define NDEBUG
#include <debug.h>
/* GLOBALS ******************************************************************/
if (! GotCommandLine)
{
GetSystemDirectory(CommandLine, MAX_PATH - 10);
- strcat(CommandLine, "\\shell.exe");
+ strcat(CommandLine, "\\cmd.exe");
}
return CommandLine;
{
DbgPrint("WL: Cannot switch to Winlogon desktop (0x%X)\n", GetLastError());
}
-
+
AllocConsole();
SetConsoleTitle( "Winlogon" );
+
+ /* Check for pending setup */
+ if (GetSetupType () != 0)
+ {
+ DPRINT ("Winlogon: CheckForSetup() in setup mode\n");
+
+ /* Run setup and reboot when done */
+ RunSetup ();
+
+// NtShutdownSystem (ShutdownReboot);
+ NtShutdownSystem (ShutdownNoReboot);
+ ExitProcess (0);
+ return 0;
+ }
+
/* start system processes (services.exe & lsass.exe) */
if (StartProcess("StartServices"))
{
if (!StartServices())
{
- DbgPrint("WL: Failed to Start Services (0x%X)\n", GetLastError());
+ DbgPrint("WL: Failed to start Services (0x%X)\n", GetLastError());
}
}
#if 0
{
if (!StartLsass())
{
- DbgPrint("WL: Failed to Start Security System (0x%X)\n", GetLastError());
+ DbgPrint("WL: Failed to start LSASS (0x%X)\n", GetLastError());
}
}
#endif
Status = LsaRegisterLogonProcess(&ProcessName, &LsaHandle, &Mode);
if (!NT_SUCCESS(Status))
{
- DbgPrint("WL: Failed to connect to lsass\n");
+ DbgPrint("WL: Failed to connect to LSASS\n");
return(1);
}
#endif
*/
/* Main loop */
- for (;;)
- {
#if 0
- /* Display login prompt */
- WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE),
- LoginPrompt,
- strlen(LoginPrompt), // wcslen(LoginPrompt),
- &Result,
- NULL);
- i = 0;
- do
- {
- ReadConsole(GetStdHandle(STD_INPUT_HANDLE),
- &LoginName[i],
- 1,
- &Result,
- NULL);
- i++;
- } while (LoginName[i - 1] != '\n');
- LoginName[i - 1] = 0;
+ /* Display login prompt */
+ WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE),
+ LoginPrompt,
+ strlen(LoginPrompt), // wcslen(LoginPrompt),
+ &Result,
+ NULL);
+ i = 0;
+ do
+ {
+ ReadConsole(GetStdHandle(STD_INPUT_HANDLE),
+ &LoginName[i],
+ 1,
+ &Result,
+ NULL);
+ i++;
+ } while (LoginName[i - 1] != '\n');
+ LoginName[i - 1] = 0;
- /* Display password prompt */
- WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE),
- PasswordPrompt,
- strlen(PasswordPrompt), // wcslen(PasswordPrompt),
- &Result,
- NULL);
- i = 0;
- do
- {
- ReadConsole(GetStdHandle(STD_INPUT_HANDLE),
- &Password[i],
- 1,
- &Result,
- NULL);
- i++;
- } while (Password[i - 1] != '\n');
- Password[i - 1] =0;
+ /* Display password prompt */
+ WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE),
+ PasswordPrompt,
+ strlen(PasswordPrompt), // wcslen(PasswordPrompt),
+ &Result,
+ NULL);
+ i = 0;
+ do
+ {
+ ReadConsole(GetStdHandle(STD_INPUT_HANDLE),
+ &Password[i],
+ 1,
+ &Result,
+ NULL);
+ i++;
+ } while (Password[i - 1] != '\n');
+ Password[i - 1] =0;
#endif
- if (! DoLoginUser(LoginName, Password))
- {
- break;
- }
+
+ if (! DoLoginUser(LoginName, Password))
+ {
}
+
+ NtShutdownSystem(ShutdownNoReboot);
ExitProcess(0);