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

Comments (7)

  1. Josh Fulmer says:

    How can I configure IE to be the primary shell on a system?

  2. sfiorito says:

    This is actually what I’m planning to do for my Car PC system. I originally started writing a front end in .NET, but then as I was working on a "skinning" system, I realized HTML and CSS do all that for me!! DUH!! Since all I need are Media Player (for music and video) and Mappoint (for navigation) I can use ActiveX controls and javascript to control them. Now, don’t get mad… 😉 but I’ve also been messing with Firefox and XUL development. Same idea there: run a XUL application as the shell (through FireFox). Starts up much faster than other frontends out there.

  3. Matt Kellner says:

    Hmm… apparently the comments interface here isn’t HTML-enabled. Here are the links again: — entry point for Custom Shells topic. — describes creating a component that configures a custom shell.

  4. Matt Kellner says:

    Hi Josh.

    Take a look at <a href=>this document</a>, which describes working with custom shells and includes links to an end-to-end process for creating one. You may also find <a href=>this document</a> useful – it describes how to create a component that will configure your shell to be virtually any program you want.

    Hope this helps!

  5. Matt Kellner says:

    I just managed to put together an IE shell for testing, and it turns out that by itself, IE will NOT auto-restart when closed via ALT-F4. So to prevent your system from becoming unusable, you would need to provide a custom shell that launches IE and keeps an eye on whether it’s running or not, so that you can relaunch it automatically when someone tries to shut it down.

  6. sfiorito says:

    haven’t tried this since i’m travelling right now, but if you set a batch file as the custom shell (which then ran your IE app) does that auto-restart? that’s weird though, because CMD autorestarts no prob. why wouldn’t some other process???