Skip to content

Instantly share code, notes, and snippets.

@jasonalderman
Last active May 10, 2019 06:39
Show Gist options
  • Select an option

  • Save jasonalderman/f7c27d18b978cc2566cdf848e8493b2c to your computer and use it in GitHub Desktop.

Select an option

Save jasonalderman/f7c27d18b978cc2566cdf848e8493b2c to your computer and use it in GitHub Desktop.
Best practices for locking down a windows computer in kiosk mode?

Kiosk Mode on Windows

What are the best practices for locking down a Windows computer for a museum or installation?

Existing Guides

There are several best practices guides for locking down Mac and Linux (Raspberry Pi, especially), such as

And the latter has links to a Windows 7 guide by Eva Schindling, which has many good pointers, too ...but it's Windows 7.

Update: via Justin Gitlin...

Many tips in both that I wish I'd seen years ago! The latter even has an EdgeUI registry key that makes the approaches below somewhat unnecessary.

Existing Approaches

For my museum projects, we've been making static sites, served locally (usually with node), and then run full-screen in Chrome's --kiosk mode. Running fullscreen on a touchscreen without a keyboard would be fine, except that Windows 8, 8.1, and 10 have a charms bar and app switcher that appear when you swipe in from the left or right side of the screen. How do you lock it down? There are three approaches I've seen:

  1. Replace the shell. Windows uses explorer.exe as a shell, which gives it the desktop and start bar and file explorer and charms, et al. You can programmatically replace the shell with another app — with startup .bat scripts, or PowerShell (see this note), or ShellLauncher — and it will run in the foreground until...
    • it crashes or
    • you hook up a keyboard and Alt+F4 or
    • you Ctrl+Alt+Del for Task Manager
  2. Assigned Access. Windows can set up a user account in a kiosk mode. This apparently only works with "provisioned enterprise apps," and UWP apps installed from the Windows Store? Multiple official Microsoft forums say that you can't do this with Chrome, only IE (or Edge on Windows 10). Since Edge will eventually be Chromium-based, this is an option.
  3. Third-party software. On previous projects, I've used KioWare Lite (the classic version), which runs $70, plus $14 a year if you opt for the maintenance plan. I've recently run across Mirabyte's free FrontFace Lockdown Tool, which is a pared-down utility from their commercial software for digital signage, but I have not used it yet.

Current Setup

As mentioned above, I'm using approach 1, with two .bat files in the shell:startup directory.

  • nodestart.bat uses sirv-cli to serve a directory of static HTML files (at http://localhost:5000) from a folder on the Kiosk user desktop.
  • launch.bat, adapted from this chromium issue comment, kills explorer and launches RestartOnCrash.exe which launches Chrome in incognito kiosk mode.

What do you use?

What have you run into? What are your best practices? Please comment below! (Thank you.)

Thank you to Wes Hsu for introducing me to several of these utilities!

@echo off
timeout 5
REM kill all chromes
taskkill /f /im chrome.exe
REM kill explorer (disables all windows functionalities like charms bar)
taskkill /f /im explorer.exe
echo This part takes a while. Please be patient...
REM start your fullscreen app
REM "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" "http://localhost:5000/" --incognito --kiosk --disable-pinch --overscroll-history-navigation=0
"C:\Users\Kiosk\Desktop\RestartOnCrash.exe"
REM after you close both app window and chrome window, relaunch explorer.exe
explorer.exe
echo You're all done! You can close this window now.
goto :eof
@echo off
echo Running the node server ... PLEASE DO NOT CLOSE THIS WINDOW
REM use sirv-cli to serve up static files
sirv "C:\Users\Kiosk\Desktop\project\"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment