Custom User Interface (Shell Replacement)
Replaces default Windows Explorer shell with custom application. MSPs use this to lock down kiosk systems or special-purpose devices to single applications.
- Policy path
- User Configuration > Administrative Templates > System
- Supported on
- Windows 10, Windows 11, Windows Server 2016 and later
Replaces default Windows Explorer shell with custom application. MSPs use this to lock down kiosk systems or special-purpose devices to single applications. Security baselines recommend setting it to custom.exe.
Description
Custom User Interface (Shell Replacement) is a Windows Group Policy setting located under User Configuration > Administrative Templates > System. It applies to the User Configuration branch and is classified as a Informational-level policy in the Kiosk & Shell Access category.
Replaces default Windows Explorer shell with custom application. MSPs use this to lock down kiosk systems or special-purpose devices to single applications.
Microsoft sets the default value to explorer.exe while industry security baselines (CIS, NIST, DISA STIG) recommend custom.exe.
Under the hood, this policy is enforced through the Windows registry at HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer using the value name Shell. Modifying the value directly through regedit.exe or PowerShell produces the same effect as configuring the GPO, but going through Group Policy is preferred so that the setting is centrally managed and survives reboots, image rebuilds, and policy refresh cycles.
In-depth explanation
This is primarily an operational or user-experience setting. It does not directly raise or lower the security posture, but it standardizes behavior across the fleet, which is important for predictable support, training, and troubleshooting in an MSP-managed environment.
The policy is grouped under Kiosk & Shell Access, which means it is typically applied through a domain-wide GPO linked at the OU level. In a multi-tenant MSP context, scope it through WMI filters or security group filtering rather than linking at the domain root, so that you can roll out progressively (pilot OU → wider rings → all production).
The setting takes effect after the next Group Policy refresh (gpupdate /force for immediate testing, or by default within ~90 minutes for workstations and ~5 minutes on domain controllers). For computer-side policies a reboot may be required; for user-side policies, a sign-off/sign-on cycle is enough.
Use cases
- Apply organization-wide hardening of kiosk & shell access on all domain-joined Windows endpoints.
- Roll out a CIS Benchmark-aligned baseline targeting 'Custom User Interface (Shell Replacement)' via a dedicated GPO.
- Reduce attack surface for accounts that handle privileged credentials or sensitive data.
- Standardize the configuration across multiple customer tenants for an MSP-managed fleet.
Security implications
This control is primarily about consistency and supportability rather than security. The main risk of leaving it unconfigured is divergence between machines, which makes troubleshooting and standardized imaging harder, especially across multiple customer tenants in an MSP context.
How to configure
- Open Group Policy Management Console (
gpmc.msc) on a domain controller or a workstation with RSAT installed. - Create or edit a GPO linked to the OU containing the target user configurations. We recommend a dedicated baseline GPO (e.g. SEC – Kiosk & Shell Access) instead of editing Default Domain Policy.
- Navigate to
User Configuration > Administrative Templates > System. - Open Custom User Interface (Shell Replacement) and set it to
custom.exe. - Click OK and close the editor.
- On the target endpoint, run
gpupdate /force(or wait for the next refresh cycle), then verify withrsop.mscorgpresult /h report.html.
Direct registry path: HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Shell. You can apply the same change with PowerShell:
New-Item -Path 'HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer' -Force | Out-Null
Set-ItemProperty -Path 'HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer' -Name 'Shell' -Value <value> -Type DWordRegistry mapping
HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\ExplorerShellREG_SZcustom.exeexplorer.exe
