Wednesday, June 09, 2010 11:22 AM
I have a technical question to developers regarding the
suppression of the shortcut "Ctrl-Alt-Del" in an application.
Background of my query:
I'm currently working on a software which allows students
to take exams online at the computer, in a kiosk mode,
which shall prevent cheating during the exam.
At the beginning of an online exam, our program creates a new
"desktop" on the client, and starts a special Portable Firefox
in fullscreen mode.
The Portable Firefox (as a client) connects to an exam server,
which is running an LMS (Learning Management System) like
ILIAS or Moodle in a quiz mode. The Portable Firefox just
has to know the URL for remotely starting the exam on the server.
During the exam, the Firefox browser is running in a kiosk mode
so it does not show an URL line and menu bar anymore,
and so the examinee can only navigate on the ILIAS or Moodle
pages of the exam.
Our application suppresses certain key shortcuts like Alt-F4
after the student has entered the exam.
But we want to suppress also the Ctrl-Alt-Del shortcut
to prevent the examinees from starting the Task Manager
and from accessing other (impermissible) applications.
Currently, our system runs on Windows XP but shall be ported
to Windows Vista and Windows 7. Under Windows XP, you could
simply set the Windows Registry Variable "DisableTaskMgr"
to 1 (true) in the Registry Key
or ...\Explorer rather than ...\System
or HKEY_LOCAL_MACHINE\... rather than HKEY_CURRENT_USER
Under Windows XP, the shortcut Ctrl-Alt-Del usually calls the Task Manager
directly, so setting the DisableTaskMgr Registry Key will successfully
prevent the Task Manager, and pressing Ctrl-Alt-Del will show no effect
on the screen, so the examinee remains on the exam page.
Unfortunately, under Windows Vista and 7, the scenario has changed:
Ctrl-Alt-Del does not directly call the Task Manager,
but the "Windows Security Screen", which has a blue background
and the five menu entries
Lock this computer
Change a password
Start Task Manager
You can disable these menu entries separately by setting
the Windows Registry keys
to 1 (true). The Windows Security Screen then still appears,
the five menu entries being greyed out.
However, we want to prevent the Windows Security Screen from
ever coming up, so the pressing of Ctrl-Alt-Del does not show
any effect on the screen (as it is the case under Windows XP).
Is anybody here who manages to suppress the Windows Security Screen
per se / totally? If so, how did you achieve that
(seen from the technical viewpoint of a Windows programmer)?
(We are working with Visual C++ 2008 Express Edition and
Visual Studio 2008). We can set Registry entries in our C++ Code,
as long as we know the correct names of the Registry keys...
but I have not heard of any Registry key which prevents
the Windows Security Screen. Is that possible at all?
A modified "Gina.dll", as often recommended, would IMHO be no
solution to the problem, because the operating system does not
use the "Gina.dll" anymore since Windows Vista, right?
In other words: even if Gina.dll were still used by the operating system,
it would not be helpful because under the old Windows NT, the shortcut
Ctrl-Alt-Del came up with the Windows LOGON Screen, which the Gina.dll
is responsible for. Whereas under Windows Vista and 7, Ctrl-Alt-Del
launches the Windows SECURITY Screen, which is different from the
Windows LOGON screen, isn't it?
And under Windows XP, where die "Gina.dll" still had a function,
we do not have the problem, since Ctrl-Alt-Del calls the Task Manager
directly and we can disable the Task Manager via Registry
(by the way only in Administrator mode. It would be nice if
this were possible with a User account, too. But a User account
is not allowed to change the Registry key for DisableTaskMgr).
Unfortunately, till now, my Google and MSDN searches produced
no helpful answer to this question.
Many thanks in advance for helpful comments and advice,
Thursday, June 10, 2010 9:56 AM
Based on my understanding, to disable the Ctrl+Alt+Del on Windows Vista, you need to write a kernel-mode device driver that filters the system's keyboard class driver. You can post this on the device driver newsgroup on how to write a driver.
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
Welcome to the All-In-One Code Framework! If you have any feedback, please tell us.
- Marked As Answer by Rong-Chun Zhang Thursday, June 17, 2010 7:00 AM
Wednesday, June 16, 2010 8:24 AM
Hello Rong-Chun Zhang,
many thanks for your answer! This was my assuption, too.
- Proposed As Answer by Julio O Wednesday, July 28, 2010 12:19 PM