So, I need to build a kiosk type of application for use in an internet cafe. The app needs to load and display some options of things to do. One option is to launch IE to surf. Another option is to play a game.
I've been reading that what I probably want to do is replace the windows shell and have it run my app when the OS loads. I'd also have to disable the task manager.
This is a multipart question.
- Can I use dotnet to create this?
- What OS do I have to use? I keep seeing windows xp embedded pop up in my readings
- Will there be any issues with the app occasionally loading IE?
- Are there any other tasks that I should be aware of when doing this? Other than task manager and replacing the shell.
- If I can do it in c#, is there anything in particular that I should know about? Maybe my forms have to inherit certain classes, etc...
You should check out Microsoft Steady State
It has plenty features and are free to use.
Windows SteadyState Features
Whether you manage computers in a school computer lab or an Internet cafe, a library, or even in your home, Windows SteadyState helps make it easy for you to keep your computers running the way you want them to, no matter who uses them.
Windows Disk Protection –
Help protect the Windows partition, which contains the Windows operating system and other programs, from being modified without administrator approval.Windows SteadyState allows you to set Windows Disk Protection to remove all changes upon restart, to remove changes at a certain date and time, or to not remove changes at all. If you choose to use Windows Disk Protection to remove changes, any changes made by shared users when they are logged on to the computer are removed when the computer is restarted
User Restrictions and Settings –
The user restrictions and settings can help to enhance and simplify the user experience. Restrict user access to programs, settings, Start menu items, and options in Windows. You can also lock shared user accounts to prevent changes from being retained from one session to the next.
User Account Manager –
Create and delete user accounts. You can use Windows SteadyState to create user accounts on alternative drives that will retain user data and settings even when Windows Disk Protection is turned on. You can also import and export user settings from one computer to another—saving valuable time and resources.
Computer Restrictions –
Control security settings, privacy settings, and more, such as preventing users from creating and storing folders in drive C and from opening Microsoft Office documents from Internet Explorer®.
Schedule Software Updates –
Update your shared computer with the latest software and security updates when it is convenient for you and your shared users.
Download: http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=d077a52d-93e9-4b02-bd95-9d770ccdb431
•Can I use dotnet to create this?
You can use .NET.
•What OS do I have to use? I keep seeing windows xp embedded pop up in my readings
you can use any OS
•Will there be any issues with the app occasionally loading IE?
in fact you can host IE control on your winform/wpf application, so no need to open IE.
•If I can do it in c#, is there anything in particular that I should know about? Maybe my forms have to inherit certain classes, etc...
there is nothing particular about kiosk application. just you need to have you app on top of everything even taskbar. hide minimize/restore/close buttons. provide a alternate way to close your app eg. by key combination
you could build an ASP.NET application that runs on the local machine (XP Pro, Vista Business, 7 Pro). Then when the OS boots, you can launch IE in kiosk mode
basically you create an IE shortcut in your Startup folder, and the shortcut points to
“C:\Program Files\Internet Explorer\IEXPLORE.EXE” –k
an ASP.NET web application can launch local EXE's if it has the right permissions.
You could use a windows service that would kick off your UI that could have your games in it AND a web browser CONTROL (WinForms/WPF). This could greatly simplify your task of securing the UI, because you would just need to set permissions on the windows service / app rather than trying to lock down the entire OS. Futhermore, you could use an additional service to provide some redundancy and always check if your UI program is still running. IF a user somehow got the window to close, this background service could just boot your kiosk app up again (also useful if it crashes). Here is also an example of how to disable the task manager on this machine.
I recently had to do the same kind of kiosk software as you. I myself am running a C++ software with Qt bu you could do it in C# .Net as well.
You can easily replace the shell using the following registery :
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell
To avoid login when the computer start you can also set the following fields in Winlogon :
AutoAdminLogon = 1
DefaultUserName = “USERNAME”
DefaultPassword = “PASSWORD”
DefaultDomainName = “ComputerName” : e.g : USERNAME-PC
Be aware that you cannot use this method to start a software as administrator. If that is your purpose I could give you a few tricks in that direction as well.
- Are there any other tasks that I should be aware of when doing this?
Other than task manager and replacing the shell.
In windows if you want to create a kiosk you will also need to disable :
- The Windows + X keys :
a. Type gpedit.msc from cmd prompt or start menu
b. Then go to : User Configuration>Administrative templates>Windows Components>File Explorer
c. In the right panel enable “Turn Off Windows + X hotkeys”
Alt+X keys
Sticky keys :
Disable Sticky Keys
Ctrl + Alt + Del :
a. Type gpedit.msc from cmd prompt or start menu
b. Select User
Configuration->Administrative Templates->System->Ctrl-Alt-Del Options
c. Double click on each : Remove Change Password, Remove Lock Computer,
Remove Task Manager, and Remove Logoff and select Enabled then OK.
d. Select Computer Configuration->Administrative Templates->System->Logon
e. In the right hand pane, double click on Hide entry points for Fast
user Switching f. Select Enabled then OK
This will remove all the nasty items in the ctrl-alt-del screen that
can give users access to things you want to protect.
I didn't have to run IE so I cannot give you any details about that.