You can use Shell Launcher to replace the default Windows 10 shell with a custom shell. You can use almost any application or executable as your custom shell, such as a command window or a custom dedicated application.
You can also configure Shell Launcher to launch different shell applications for different users or user groups.
There are a few exceptions to the applications and executables you can use as a custom shell:
C:WindowsSystem32Eshell.exe
. Using Eshell.exe as the default shell will result in a blank screen after user signs in.Note
You cannot configure both Shell Launcher and assigned access on the same system.
Use Shell Launcher V2, you can specify a Universal Windows app as a custom shell. Check Use Shell Launcher to create a Windows 10 kiosk for the differences between Shell Launcher v1 and Shell Launcher V2.
Shell Launcher processes the Run and RunOnce registry keys before starting the custom shell, so your custom shell doesn’t need to handle the automatic startup of other applications and services.
Shell Launcher also handles the behavior of the system when your custom shell exits. You can configure the shell exit behavior if the default behavior does not meet your needs.
Fix Classic Shell on Windows 10 Anniversary Update. Many users faced an issue with Classic Shell on Windows 10 version 1607. After their PC got upgraded to Windows 10 Anniversary Update from an earlier build, Classic Shell got uninstalled or became broken with a message in Action Center telling the user that it is not compatible and was removed. Classic Shell™ is free software that improves your productivity, enhances the usability of Windows and empowers you to use the computer the way you like it. The main features are: Highly customizable start menu with multiple styles and skins; Quick access to recent, frequently-used, or pinned programs. If you use Classic Shell (Windows 8/10 Start menu replacement) every time you upgrade Windows your users will get hit with the message “Classic Shell needs to configure itself for the new operating system”.
Windows 10 Enterprise or Windows 10 Education.
Shell Launcher is an optional component and is not turned on by default in Windows 10. It must be turned on prior to configuring. You can turn on and configure Shell Launcher in a customized Windows 10 image (.wim) if Microsoft Windows has not been installed. If Windows has already been installed and you are applying a provisioning package to configure Shell Launcher, you must first turn on Shell Launcher in order for a provisioning package to successfully apply.
Note
Turning on Shell Launcher does not require a device restart.
This example uses a Windows image called install.wim, but you can use the same procedure to apply a provisioning package (for more information on DISM, see What Is Deployment Image Servicing and Management.
Open a command prompt with administrator privileges.
Copy install.wim to a temporary folder on hard drive (in the following steps, we'll assume it's called C:wim).
Create a new directory.
Mount the image.
Enable the feature.
Commit the change.
The Shell Launcher settings are also available as Windows provisioning settings so you can configure these settings to be applied during the image runtime. You can set one or all Shell Launcher settings by creating a provisioning package using Windows Configuration Designer and then applying the provisioning package during image deployment time or runtime. If Windows has not been installed and you are using Windows Configuration Designer to create installation media with settings for Shell Launcher included in the image or you are applying a provisioning package during setup, you must enable Shell Launcher on the installation media with DISM in order for a provisioning package to successfully apply.
Use the following steps to create a provisioning package that contains the ShellLauncher settings.
There are two ways you can configure Shell Launcher:
You can configure the following options for Shell Launcher:
Any changes do not take effect until a user signs in.
By default, Shell Launcher runs the default shell, which is specified when you create the OS image at design time. The default shell is set to Cmd.exe, but you can specify any executable file to be the default shell.
You can configure Shell Launcher to launch a different shell for specific users or groups if you do not want to run the default shell. For example, you might configure a device to run a custom application shell for guest accounts, but run the standard Windows Explorer shell for administrator accounts in order to service the device.
If you use the WMI providers to configure Shell Launcher for a user or group at run time, you must use the security identifier (SID) for that user or group; you cannot use the user name or group name.
For more information about common security identifiers, see Well-known SIDs.
When the current signed in account belongs to two or more groups that have different configurations defined for each group, Shell Launcher uses the first configuration it finds. The search order is not defined, so we recommend that you avoid assigning a user to multiple groups with different Shell Launcher configurations.
When a custom shell exits, Shell Launcher can perform one of four actions:
Action | Description |
---|---|
0 | Restart the shell. |
1 | Restart the device. |
2 | Shut down the device. |
3 | Do nothing. |
Important
Make sure that your shell application does not automatically exit and is not automatically closed by any features such as Dialog Filter, as this can lead to an infinite cycle of exiting and restarting, unless the return code action is set to do nothing.
You can define a default return code action for Shell Launcher with the DefaultReturnCodeAction setting. If you do not change the initial value, the default return code action is set to 0 (zero), which indicates that Shell Launcher restarts the shell when the shell exits.
Shell Launcher can take a specific action based on the exit code returned by the shell. For any given exit code returned by the shell, you can configure the action that Shell Launcher takes by mapping that exit code to one of the shell exit actions.
If the exit code does not match a defined value, Shell Launcher performs the default return code action.
For example, your shell might return exit code values of -1, 0, 1, or 255 depending on how the shell exits. You can configure Shell Launcher to:
Your custom return code action mapping would look like this:
Exit code | Action |
---|---|
-1 | 1 (restart the device) |
0 | 0 (restart the shell) |
1 | 3 (do nothing) |
255 | 2 (shut down the device) |
Modify the following PowerShell script as appropriate and run the script on the device.
Note
The script above includes examples of multiple configuration options, including removing a custom shell and disabling Shell Launcher. It is not intended to be run as-is.
A custom shell is launched with the same level of user rights as the account that is signed in. This means that a user with administrator rights can perform any system action that requires administrator rights, including launching other applications with administrator rights, while a user without administrator rights cannot.
Warning
If your shell application requires administrator rights and needs to be elevated, and User Account Control (UAC) is present on your device, you must disable UAC in order for Shell Launcher to launch the shell application.