Hervé Poussineau wrote:
Hello,
The goal is to be fully compatible with Windows 2000 WinLogon at the first time, and then add Remote Desktop functionality. I've currently managed to load Windows XP msgina.dll, but it doesn't work yet. For information, I mostly use these links: http://www.microsoft.com/technet/prodtechnol/windows2000serv/maintain/securi ty/msgina.mspx http://msdn.microsoft.com/msdnmag/issues/05/05/SecurityBriefs/ http://msdn.microsoft.com/msdnmag/issues/05/06/SecurityBriefs/ http://msdn.microsoft.com/library/default.asp?url=/library/en-us/secauthn/se curity/authentication_functions.asp http://www.pgina.org/
http://www.microsoft.com/windows2000/docs/msgina.doc is a good whitepaper as well.
I kept GUI-on-demand, but I moved the functionnality from Winlogon to
Gina.
ReactOS Gina contains 2 User Interfaces: one in graphic mode (in gui.c) and the other in text mode (tui.c). By default, the graphical one is used. To use the text one, you have to add /CMDCONS parameter to your freeldr.ini. I know that Windows uses this parameter for Recovery Console, but we can change its name later.
Yeah, a name change would be wise.
By the way, if I remember right, Windows asks for a username/password in text mode when using this switch. (May it be located in Windows Gina by chance?)
That's the ERD, which is implemented, believe it or not, as a system driver! If you look at it with the .PDB you'll see it has a bunch of functions for talking to ksecdd.sys and reading the password hash from the registry. Winlogon/user-mode programs have nothign to do with it.
For information, the second thing changed by /CMDCONS is the runned the shell. The shell program is read in HKLM\SOFTWARE\ReactOS\Windows NT\Winlogon\ConsoleShell key instead of HKLM\SOFTWARE\ReactOS\Windows NT\Winlogon\Shell, and defaults to cmd.exe instead of explorer.exe
Awesome!
I never disagree to beeing paid, even very little ;) By the way, at the moment, I'm only working on winlogon/msgina, which means the User Interface but not the authentification framework which is behind (lsass/advapi32)
Yes, that was the original plan for the SoC stuff too.
Now, let's move to the bad part of this email.
I've still some problems which I'm not sure to be able to solve myself.
- SwitchDestkop seems to be not working. To test, remove the hack I've
added in winlogon/wlx.c:CreateWindowStationAndDesktops and you will never see the shell.
Sadly my Win32K internals only apply to NT... Thomas worked on the Desktop implementation, he should know.
- The current shutdown procedure is not correct. I directly call
NtShutdownSystem in Winlogon instead of notifying SMSS. See http://www.reactos.org/wiki/index.php/ShutdownProcess for more details about the shutdown process.
I know that the shutdown procedure is a bit broken in kernel-mode, but again, I don't know how our SMSS stuff was designed.
- And the last one, specially for Filip ;) When trying to enter a user name
which is not Administrator, I get a BSOD in So, I'm asking here for help, if anyone can take a look at this.
Thanks,
Hervé
PS 1: Be sure that no new hardware wizard will appear at next boot, and try to add /CMDCONS to freeldr.ini. You will boot in text mode. PS 2: Try to press SHIFT during boot to prevent autologon and you will be able to see some Gina dialogs. Logoff is also supposed to work.
I'll try that when I get the chance, cool!