views:

66

answers:

4

I'm writing a software for a call-center. It's somewhat like a ATM program: user can only interactive with it, not with underlying Windows. It takes controls when user logs in to Windows, and when user exits, it logs off Windows.

How can I do that in .NET? A demo will be much appreciated.

Thank you.

A: 

What I did was to use DirectX and just use full-screen and exclusive modes, which you can see a small example of here: http://www.directxtutorial.com/tutorial9/b-direct3dbasics/dx9B2.aspx.

This is more work, but it will allow you to do what you want.

Depending on what control you have, there are steps you can do with group policy to limit what people can do on the computer. You can look at how people set up a kiosk application on Windows for some ideas.

James Black
hmm, I don't think DirectX fits a winform program
Vimvq1987
@Vimvq1987 - I mentioned it would be more work, but it would solve your problem, otherwise to get what you want will be much more difficult.
James Black
A: 

What you want to do is run the OS in "kiosk mode".

This entails using the Group Policy Management Console to apply the kiosk mode template - as part of this you register your application as the shell.

As such there is no taskbar, or explorer view to fall back on to. The only way to run the usual shell would be to connect a keyboard to the system - press ctl-alt-delete and run explorer from the taskmanager that pops up.

And you can disable even the standard task manager if users are going to have keyboard access to the console. You will want to implement some kind of launch explorer.exe interface otherwise the system might become a bit difficult to manage :P

Chris Becke
A: 

You can set your applications window to be always on top and to cover the entire screen. If you exclude buttons that close the window the user must know that ALT+F4 closes the window in order to exit. This has been good enough for me those times I've needed it.

Niklas Winde
+2  A: 

Replace the Windows Shell.

By that I mean Explorer.exe, by means of editing the Windows Registry. What this does for you is instead of logging on and the system running Explorer.exe which consists of the Start Menu, Taskbar and other similar features you are familiar with, it only runs your program. There is no desktop, no context menu, no taskbar, or start menu. Thus, making your application "The Shell" or the new "Explorer.exe".

However, by doing this the user still has access to Control+Alt+Delete, so they would still be able to access the Windows Task Manager, which mind you can also be disabled via a simple Registry Key Entry.

This is the most pain free, easiest solution because you don't even have to worry about things such as disabling the WindowsKey or other annoyances.

The registry key to this is as follows:

SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon

The name of the value to modify is:

Shell

And you can simply enter the value to be the fully qualified path to your program's executable file. You will only want to do this under HKEY_CURRENT_USER and only for the account that is to run your shell program. So you will need two separate accounts.

  • Administrator account
    • This account will just be a normal password protected account that will be used to manage the system
  • Kiosk account
    • This account will be the account that is logged on at all times, which runs your custom shell (your application)

Additional Notes

To disable the Task Manager the registry path is as follows:

Software\Microsoft\Windows\CurrentVersion\Policies\System

The name of the value is:

DisableTaskMgr

This is a DWORD value which to enforce the policy must be set to '1'.

David Anderson