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.
1) 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.
2) 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.
3) 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!
--
Best regards,
Alex Ionescu
Project Lead, TinyKRNL
Kernel-Mode Software Design Engineer, ReactOS