Discussion:
Replacing GINA on Windows 2003 Terminalserver
(too old to reply)
unknown
2005-03-29 07:10:23 UTC
Permalink
Hi experts,

I have a GINA.dll, which installs between any previous GINA and the
MSGINA.dll on a Windows 2003 with terminal services.
I implemented all documented functions and everything works right except the
following:

If the machine is restarted, and someone made a connection to the machines
console (with mstsc /console), and then logs of, it's no longer possible to
restart the machine with the ExitWindowsEx function. Sure, the machine
starts the shutdown, but then it remains somewhere in a loop.

The checked build of the systems shows the following entries in the log-file
for winlogon:
10:04:04.736: 692.2132> Winlogon-Trace: Calling ExitWindowsEx(0x3807, 0)
10:04:05.054: 692.696> Winlogon-Trace-SAS: LOGONNOTIFY message 14
10:04:05.054: 692.696> Winlogon-Trace: Received SAS from winsrv, code 7
(User Defined)
10:04:05.054: 692.696> Winlogon-Trace: In state NoOne_Display, sending kill
message to window
10:04:05.054: 692.696> Winlogon-Trace: Sending SAS code 7 (User Defined) to
window b0054 (Welcome window)
10:04:05.054: 692.696> Winlogon-Trace: ChangeStateForSAS: Went from 3
(NoOne_Display) to 4 (NoOne_SAS)
10:04:05.054: 692.696> Winlogon-Trace-State: SASRouter: In state NoOne_SAS
10:04:05.054: 692.696> Winlogon-Trace-Timeout: Disabling timeouts
10:04:05.054: 692.696> Winlogon-Trace-State: Setting state to NoOne_Display
10:04:05.054: 692.696> Winlogon-Trace-State: Setting state to NoOne_Display
10:04:05.070: 692.696> Winlogon-Trace-State: Setting state to NoOne_Display
10:04:05.070: 692.696> Winlogon-Trace-State: Setting state to NoOne_Display
10:04:05.070: 692.696> Winlogon-Trace-State: Setting state to NoOne_Display
10:04:05.070: 692.696> Winlogon-Trace-State: Setting state to NoOne_Display
...

Has anybody an idea, what i can do?

Thanks!
Max
Dmitriy Golubev
2005-03-30 08:22:48 UTC
Permalink
Hi!

Please keep in mind, that you must call WlxDialogBox only from primary
thread, and use DialogBox in other threads.
Also i think, that the following link will be very interesting for you:
http://www.microsoft.com/windows2000/techinfo/administration/security/msgina.asp

PS: Excuse me for my bad english
Post by unknown
Hi experts,
I have a GINA.dll, which installs between any previous GINA and the
MSGINA.dll on a Windows 2003 with terminal services.
I implemented all documented functions and everything works right except
If the machine is restarted, and someone made a connection to the machines
console (with mstsc /console), and then logs of, it's no longer possible
to restart the machine with the ExitWindowsEx function. Sure, the machine
starts the shutdown, but then it remains somewhere in a loop.
The checked build of the systems shows the following entries in the
10:04:04.736: 692.2132> Winlogon-Trace: Calling ExitWindowsEx(0x3807, 0)
10:04:05.054: 692.696> Winlogon-Trace-SAS: LOGONNOTIFY message 14
10:04:05.054: 692.696> Winlogon-Trace: Received SAS from winsrv, code 7
(User Defined)
10:04:05.054: 692.696> Winlogon-Trace: In state NoOne_Display, sending
kill message to window
10:04:05.054: 692.696> Winlogon-Trace: Sending SAS code 7 (User Defined)
to window b0054 (Welcome window)
10:04:05.054: 692.696> Winlogon-Trace: ChangeStateForSAS: Went from 3
(NoOne_Display) to 4 (NoOne_SAS)
10:04:05.054: 692.696> Winlogon-Trace-State: SASRouter: In state NoOne_SAS
10:04:05.054: 692.696> Winlogon-Trace-Timeout: Disabling timeouts
10:04:05.054: 692.696> Winlogon-Trace-State: Setting state to
NoOne_Display
10:04:05.054: 692.696> Winlogon-Trace-State: Setting state to
NoOne_Display
10:04:05.070: 692.696> Winlogon-Trace-State: Setting state to
NoOne_Display
10:04:05.070: 692.696> Winlogon-Trace-State: Setting state to
NoOne_Display
10:04:05.070: 692.696> Winlogon-Trace-State: Setting state to
NoOne_Display
10:04:05.070: 692.696> Winlogon-Trace-State: Setting state to
NoOne_Display
...
Has anybody an idea, what i can do?
Thanks!
Max
unknown
2005-04-20 10:21:31 UTC
Permalink
Hi there,
let me tell you, that i solved the problem.

In my implementation, i basically forward all calls to my GINA's interface
to MSGINA - except one, the WlxDisplaySASNotice.
As i found out, in W2003's MSGINA, a lot of important stuff runs inside this
function, that i didn't implement, so i decided to change my GINA a bit and
also forward this call.
Now I couldn't notice any problems any more!

Max
Post by Dmitriy Golubev
Hi!
Please keep in mind, that you must call WlxDialogBox only from primary
thread, and use DialogBox in other threads.
http://www.microsoft.com/windows2000/techinfo/administration/security/msgina.asp
PS: Excuse me for my bad english
Post by unknown
Hi experts,
I have a GINA.dll, which installs between any previous GINA and the
MSGINA.dll on a Windows 2003 with terminal services.
I implemented all documented functions and everything works right except
If the machine is restarted, and someone made a connection to the
machines console (with mstsc /console), and then logs of, it's no longer
possible to restart the machine with the ExitWindowsEx function. Sure,
the machine starts the shutdown, but then it remains somewhere in a loop.
The checked build of the systems shows the following entries in the
10:04:04.736: 692.2132> Winlogon-Trace: Calling ExitWindowsEx(0x3807, 0)
10:04:05.054: 692.696> Winlogon-Trace-SAS: LOGONNOTIFY message 14
10:04:05.054: 692.696> Winlogon-Trace: Received SAS from winsrv, code 7
(User Defined)
10:04:05.054: 692.696> Winlogon-Trace: In state NoOne_Display, sending
kill message to window
10:04:05.054: 692.696> Winlogon-Trace: Sending SAS code 7 (User Defined)
to window b0054 (Welcome window)
10:04:05.054: 692.696> Winlogon-Trace: ChangeStateForSAS: Went from 3
(NoOne_Display) to 4 (NoOne_SAS)
10:04:05.054: 692.696> Winlogon-Trace-State: SASRouter: In state NoOne_SAS
10:04:05.054: 692.696> Winlogon-Trace-Timeout: Disabling timeouts
10:04:05.054: 692.696> Winlogon-Trace-State: Setting state to
NoOne_Display
10:04:05.054: 692.696> Winlogon-Trace-State: Setting state to
NoOne_Display
10:04:05.070: 692.696> Winlogon-Trace-State: Setting state to
NoOne_Display
10:04:05.070: 692.696> Winlogon-Trace-State: Setting state to
NoOne_Display
10:04:05.070: 692.696> Winlogon-Trace-State: Setting state to
NoOne_Display
10:04:05.070: 692.696> Winlogon-Trace-State: Setting state to
NoOne_Display
...
Has anybody an idea, what i can do?
Thanks!
Max
Loading...