Home
Solutions
Download
Purchase
Documentation
Get Help
Reseller
My Account
Testimonials
Customers
Contact
Fasttrack Global

Building a kiosk pc with shell replacement

What if you could drop a computer into an Organizational Unit (OU) and this computer then turns into a locked kiosk computer that only shows a simple menu at startup that is configured by you - or just starts one specific application or web page? Have a look at the movie below. This would be a very powerful feature for shared or public computers that should offer only limited availability to applications.

It is actually much simpler than it sounds. With FastTrack and Group Policies, you have all the building blocks you need. You just need two small FastTrack scripts and a few group policy settings. Read on for a blueprint on how to do this.

FastTrack Scripting Host is certified by Citrix as a "Citrix Ready" product.



Building a kiosk computer walkthrough

Before you read on, you can press play on the video below to watch Senior Technical Writer Steve Dodson from Binary Research International walk you through the basics of building a Kiosk Computer. The video demonstrates the essentials presented on this page.



Step 1 of 3: Creating a menu

The first thing we need to do is to create a menu. At first we can just start it from the script editor for later installation through the OU Group Policies. If we just want the computer to start one specific application, we can just write a script line to do that one thing at startup, for example starting a published Citrix XenApp Desktop using the ShowIcaApp command followed by a ShutDown command. In this case we will show a menu of choices.

Let us use the example from the Citrix page as a template, which mixes an offering of locally installed applications and Remote Desktop and Citrix XenApp remote sessions. You can insert this example in the script editor by selecting "Kiosk Menu" in the "New Script" window.

ResumeOnError

 

:Restart

Set Selection=[Menu ACME KIOSK,Process|Intranet,Connected|Internet,Window|Acme ERP,User|Acme CRM,Screen|My Remote Desktop,Stop|Exit]

 

Switch [Var Selection]

  Case Intranet

    ShowWebPage www.google.com,Acme Intranet   ''Url would be internal intranet url

  Case Internet

    RunMax IExplore.exe,-private http://www.google.com

  Case Acme ERP

    RunIcaApp AcmeCitrix:8080,Acme ERP

  Case Acme CRM

    RunIcaApp AcmeCitrix:8080,Acme CRM

  Case My Remote Desktop

    ShowRemoteDesktop AcmeSrv,My Remote Desktop

  Default

    ShutDown

End Switch

 

Goto Restart

This will show the menu below. While you are testing on your own computer, you should replace the ShutDown command with an Exit command to avoid shutting down your computer, when exiting the menu. The initial ResumeOnError should be present, because in case of a problem launching a menu item, the script must continue to avoid terminating the script itself and rendering the kiosk computer with no shell.

Kiosk Menu

We need to compile our script into an exe file. Hit F10 or select "Create Exe File" -> "Compile Script To Exe File" in the script editor menu. Save the exe file as "FSHShell.exe" on the netlogon share.

Compiling a shell exe

If you need more than one type of kiosk computer, you can handle it two ways. You can duplicate the whole setup using more OUs and shell exe files, but if the kiosk computers are relatively similar, you can use one OU and shell exe file and control the menu by computer security groups in the menu script. An example of this can be seen on the RemoteApp launchers page, but ComputerIsMemberOf must be used instead of UserIsMemberOf, as this script must be based on computer groups instead of user groups.


Step 2 of 3: Creating an installation script

Now we have a shell exe file ready and the next thing we need is a script to install the shell and make a few machine modifications. The way this script will be deployed is by compiling it into an msi file and then set up as a software installation for the OU that we will be creating later. The script we will use, looks like the below. You can insert this example in the script editor by selecting "Kiosk Installer" in the "New Script" window.

If [CmdParam Action]=Uninstall Then

  ''==== UNINSTALL - ENABLE USB, CD AND FLOPPY SERVICES - SEE http://support.microsoft.com/kb/555324 ====

  WriteRegistry HKLM\SYSTEM\CurrentControlSet\Services\USBSTOR\Start,3,REG_DWORD

  WriteRegistry HKLM\SYSTEM\CurrentControlSet\Services\Cdrom\Start,3,REG_DWORD

  WriteRegistry HKLM\SYSTEM\CurrentControlSet\Services\Flpydisk\Start,3,REG_DWORD

  WriteRegistry HKLM\SYSTEM\CurrentControlSet\Services\Sfloppy\Start,3,REG_DWORD

 

  ''==== REMOVE AUTO-LOGON ====

  DisableAutoLogon

 

  ''==== RESTORE THE SHELL (EXPLOSetRER.EXE) ====

  WriteRegistry HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell,Explorer.exe

Else

  ''==== INSTALL - DISABLE USB, CD AND FLOPPY SERVICES - SEE http://support.microsoft.com/kb/555324 ====

  WriteRegistry HKLM\SYSTEM\CurrentControlSet\Services\USBSTOR\Start,4,REG_DWORD

  WriteRegistry HKLM\SYSTEM\CurrentControlSet\Services\Cdrom\Start,4,REG_DWORD

  WriteRegistry HKLM\SYSTEM\CurrentControlSet\Services\Flpydisk\Start,4,REG_DWORD

  WriteRegistry HKLM\SYSTEM\CurrentControlSet\Services\Sfloppy\Start,4,REG_DWORD

 

  ''==== SET AUTO-LOGON ====

  EnableAutoLogon acme\KioskUser,KioskPass45

 

  ''==== REPLACE THE SHELL ====

  WriteRegistry HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell,\\[UserDomain]\netlogon\FSHShell.exe

End If

If we look at the MSI page, it says that when you compile a FastTrack script into an MSI installation file, the command-line parameter "Action" is passed, which contains either "Install" or "Uninstall", depending on the context. When you drag a computer into the OU, the MSI file is installed and the "Action" command-line parameter value will contain "Install". When you drag a computer out of the OU, the script is uninstalled and the value then contains "Uninstall". In other words, the first half of the script is executed when a computer is removed from the OU and the second half is executed, when a computer is added to the OU.

The command EnableAutoLogon command needs credentials to log on automatically to the computers. In the next section, the creation of the user is explained. Correct the domain "acme" to your domain and decide on a password to use for KioskUser before saving the script.

Let us first compile the script into an MSI file to understand the context of use, before analyzing the script further. Save the script and go to the menu named "Create Msi File" and select "Compile Script Into Msi File":

MSI menu

Generating an MSI file from a script

You could also have included the FSHShell.exe file inside and msi file by using "Compile Project To Msi File", but leaving the FSHShell.exe on a network location instead allows you to change it at any time without requiring a new deployment each time.

It is important to pay attention to the version number, because in case you need to update existing computers, you can just generate a new MSI file, increase the version number and replace the OU software package. Because the installation name is the same, FastTrack will automatically later identify the package as the same software in an updated version, which again will invoke what is called "major update" in Windows Installer. The "Major Update" feature ensures that existing installations are updated instead of installing another copy. This is explained on the MSI page.

If we go back to the script above, the script basically does this on install (and the opposite on uninstall):
  • Disables the services for USB, CD-ROMs, DVDs and legacy floppy disks. While it may not be necessary, it is still possible to open a document from a usb stick, if word or excel were offered as a menu choice.
  • Sets auto logon for a specific user. This must be a user in the same OU as the kiosk computers - see next section.
  • Points the shell process to FSHShell.exe on any copy of the netlogon share instead of Explorer.exe.

Step 3 of 3: Setting up the OU and GPO

The last step is creating the OU and Group Policies for this OU. Create a new OU for example called "Kiosk Computers". Inside this OU, create a user for example called "KioskUser". This user must NOT have password expiration, as no one knows the password. The username and password you selected in the installation script must be used. This user will be used as the user that logs on to all computers in the OU. The new OU with the kiosk user looks like this:

New OU for kiosk computers

Note that you could also decide to remove the auto logon command and let each user log on to the computer first and have the menu served. This could make a lot of sense in many scenarios, but there is a tradeoff that you must be aware of. Your users are then not in the above OU and therefore you would have to apply lock-down Group Policy settings (explained further down) outside the new OU to these users. This means they apply to all computers these users log onto, because it the same set of Group Policies that each user has on all computers. So if you decide to let users log on to the workstation, you are not able to lock the task manager and other ctrl+alt+del offerings, unless you move the users to the new OU also, but then you must make sure they never use non-kiosk computers.

Next step is to create Group Policies that only applies to this OU. Start "Group Policy Management" under "Administrative Tools" on a domain controller, identify the new OU and create and edit a new policy called for example "Kiosk Policy":

Creating a new group policy

Naming a new group policy

Editing a group policy

The first thing we need to do with the group policy is to install our MSI file on all computers that are dragged into the OU. Select a new Software installation and make sure that you set the installation under Computer Configuration and not User Configuration:

Install software through GPO

You must now place the "Kiosk Shell.msi" in a location which can be reached from clients, for example your netlogon share and point the package to this file. After creating the package, it is extremely important that you open properties on the package, select the "Deployment" tab and check "Uninstall this application when it falls out of the scope of management" (see below). If you don't set this checkmark, your shell will not be restored, if you drag a computer out of the OU.

Setting uninstall option for software through GPO

Now everything is set up and you can drag computers into the OU and next time they restart, the computers are kiosk computers like the one in the movie at the top.

There is one detail left though. If we lookup Kiosk Software at wikipedia here, there is a consensus that kiosk software means locking down the computer. The example on this page should be sufficient for locking down, but you can expand Group Polices and scripts to your needs. The best way around this is to make your own list of what you would want to lock down and if it is not covered on this page, Google each topic for group policy settings, registry keys, etc. Everything can be locked down, preferably with Group Policies, and secondarily with computer modification that can be included in the step 2 installation script. The USB, CD-ROM, DVD and floppy disk blocking is an example of the latter, where the only way to do it is to stop the corresponding services.

One thing that always makes sense on kiosk computers is to disable all ctrl+alt+del options and make sure that the computer never prompts for password, as the user will not know the password for the "KioskUser". Some settings are not possible to set per machine. For example disabling the task manager was possible to set per machine until Windows 7, but was never truly supported by Microsoft, so best practice is to pay attention to what is supported by Microsoft and what is not, to make sure everything works on future versions of Windows.

The password prompt settings and ctrl+alt+del options are only officially supported per user, and this was why our KioskUser was created in the same OU. If it wasn't, it would not be covered by the group policy we created and if we let the user themselves log on, they would also not be covered by the policies. So first we need to make sure that password prompt is disabled for screensavers and resume:

Disable password protect on screensaver

Disable password prompt on resume with GPO

The next thing to do is to remove all options, when ctrl+alt+del is pressed. Normally options are available to lock the computer, switch user, log off, change password and start the task manager. We need to disable all these settings, so when a user hits ctrl+alt+del, no options but shutdown are offered, as shown below.

Disable task manager with GPO

Disable fast task switching with GPO

Ctrl alt del without options with GPO

If the "KioskUser" must share a common logon script to map drives and printers, you can use "If UserIsInOU KIOSK Computer Then" condition to differentiate the logon script for this user.

Now everything is ready. When a computer must be converted into a kiosk computer, the computer can just be dragged into the OU, as shown below, and when dragged out of the OU, the computer is restored to a normal desktop.

Dragging a computer into an OU

NOAA GLS Maersk Kawasaki Disney Goodyear Telenor AJG All testimonials ->
More customers ->