Windows 10 Kiosk Mode Shell Launcher 【DIRECT · 2027】

if ($result.ReturnValue -eq 0) Write-Host "Shell Launcher configured successfully for $userName" else Write-Host "Error: Return value $($result.ReturnValue)"

$shellLauncherClass.RemoveCustomShell("KioskUser") Get-WmiObject -Namespace "root\standardcimv2\embedded" -Class "WESL_UserSetting" | Select-Object UserName, ShellPath 6. Security and Behavior Considerations | Aspect | Implication | | --- | --- | | Keyboard shortcuts | Ctrl+Alt+Del may still open the security screen. Group Policy must disable relevant options. | | Win32 app crashes | If the custom shell terminates, the user session may become unusable (black screen). Implement watchdog or auto-restart logic in the custom app. | | Remote management | Shell Launcher does not block remote administration tools (e.g., PowerShell remoting). The kiosk account should have minimal privileges. | | UWP incompatibility | Classic Shell Launcher cannot directly launch UWP apps. Use shell:AppsFolder trick or migrate to Assigned Access for UWP. | 7. Comparison: Shell Launcher vs. Assigned Access | Feature | Shell Launcher (Classic) | Assigned Access (Kiosk Mode) | | --- | --- | --- | | Supports Win32 apps | Yes | No (UWP only, except via XML hack in Enterprise) | | Supports multiple apps | Yes (app can launch others) | No (single app) | | Complexity | High (manual WMI) | Low (Settings UI) | | UWP support | No | Yes | | Recommended use | Custom launcher, legacy apps, multi-app kiosk | Simple content viewer, Edge kiosk | 8. Troubleshooting Common Issues Issue: After setting Shell Launcher, the user logs in to a black screen. Solution: Verify the path to the executable exists and is accessible. Also ensure the executable does not depend on explorer.exe services (e.g., some clipboard features). windows 10 kiosk mode shell launcher

To bypass the login screen, use Sysinternals Autologon or configure the registry: if ($result

The custom shell exits immediately. Solution: The shell must block or loop (e.g., Application.Run() in .NET). A console app that returns will log out the user. | | Win32 app crashes | If the

# Define variables $userName = "KioskUser" $shellPath = "C:\KioskApp\launcher.exe" $shellLauncherClass = Get-WmiObject -Namespace "root\standardcimv2\embedded" -Class "WESL_UserSetting" -ErrorAction Stop Set the shell for the user $result = $shellLauncherClass.SetCustomShell($userName, $shellPath, $null, $null)