IE as the shell (in Kiosk Mode)

In Windows, it's possible to replace the standard Explorer shell with another shell program, such as the CMD prompt or a custom written shell. What is less commonly known is that there is potential to use Internet Explorer as your shell in an embedded system, by taking advantage of IE's "Kiosk Mode". Check out this article on the Microsoft Support site about enabling Kiosk Mode.

So, how and where could this be useful? Say you want to build a sales kiosk, whose only function will be to present customers with a web-based interface for demonstrating products or taking sign-up information for a service, completing surveys, etc. Normally, this could be easily achieved by building a minimal system that includes IE, but usually you would still have Explorer as your system shell and IE configured to run in full-screen mode. This has several drawbacks, however: IE could easily be closed, you could navigate to other sites or folders on the system, and a lot of extra security components, configuration work, etc., would need to be performed in order to ensure that users couldn't compromise the system.

In IE's Kiosk Mode, the toolbars and address bar are no longer displayed, IE runs in full-screen mode all the time, and this effectively restricts the user to the initial site that IE was started on. Being able to ALT-TAB between applications or run programs using the Windows key, etc., are functions of the Explorer shell... so why not take Explorer out of the picture and configure IE to be the primary shell of the system? This way, as soon as the system boots past Winlogon, your users are immediately presented with your intended webpage.

A potential problem with this scenario is that ALT-F4 can still close IE. But, as has been seen with the Command Shell, if you exit out of the shell, it simply restarts on you automatically. (Note that this may not necessarily be true of all shells and I have not yet tested this functionality with IE. Of course, if IE doesn't auto-restart, you could provide a custom shell that can detect whether an instance of IE is running, and have it restart IE if it's not.)

- Matt Kellner