How to make Windows to Kiosk

How to make Windows to Kiosk

Transforming a Windows machine into a locked-down kiosk requires a multi-layered approach. You want to move away from a standard "User Desktop" experience and toward a "Dedicated Appliance" model.
Mar 27th,2026 65 Views

To build a professional-grade Windows 10 Kiosk solution by replacing the native explorer.exe with a custom Launcher, you are essentially creating a dedicated "Watchdog" environment. This approach ensures maximum security and reliability for industrial or commercial hardware.


1. System Architecture: The Shell Replacement

Windows identifies the desktop environment via a registry key. By replacing explorer.exe, you prevent the Taskbar, Start Menu, and Desktop from ever loading, significantly reducing the system's attack surface.

Implementation (Registry)

To apply this to a specific user (e.g., KioskUser), modify the following:

  • Path: HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Winlogon

  • Value Name: Shell

  • Value Data: C:\Kiosk\Launcher.exe


2. Launcher Functional Design (C# / WPF)

The Launcher should be a lightweight, "invisible" (or branded) application that acts as a supervisor.

Core Feature: The Watchdog Mechanism

The Launcher monitors the Target Application's process. If it crashes or is closed, the Launcher logs the event and restarts it.

C#
public void StartWatchdog() {
    string appPath = @"C:\Kiosk\App\TargetApp.exe";
    string processName = "TargetApp";

    while (true) {
        var processes = Process.GetProcessesByName(processName);
        if (processes.Length == 0) {
            Logger.Log("TargetApp crashed or was closed. Attempting restart...");
            try {
                Process.Start(appPath);
            } catch (Exception ex) {
                Logger.Log($"Critical Error during restart: {ex.Message}");
            }
        }
        Thread.Sleep(5000); // Check every 5 seconds
    }
}



Reset & Logging

  • Logging: Use a library like Serilog to write to a local file or a remote database.

  • System Reset: If the app fails to restart 3 times in a row, the Launcher should trigger a full system reboot:

    Process.Start("shutdown.exe", "/r /t 0");


3. The Update Utility (USB & Network)

The Launcher should check for updates before starting the main application.

A. USB Update (Offline)

Monitor for drive insertion using WMI (Windows Management Instrumentation).

  1. Detect U-Disk insertion.

  2. Search for a specific file (e.g., update.zip) and a checksum/signature file.

  3. Verify the signature, unzip, and replace the current binary.

B. Network Update (Online)

Perform a "Check for Update" request to a central server:

  1. Compare local version.json with the server's version.

  2. If an update is available, download the payload via HttpClient.

  3. Perform an atomic replacement (Rename current .exe to .old -> Write new .exe -> Restart).


4. Professional Lockdown Checklist

Feature Technical Implementation
Auto-Login Use netplwiz or Registry AutoAdminLogon to bypass the login screen.
Keyboard Blocking Implement a Low-Level Keyboard Hook (Win32 API) to block Win, Alt+Tab, and Alt+F4.
Edge Gestures Disable "Swipe from edge" via Group Policy if using a touchscreen.
Power Management Disable Sleep, Hibernation, and Screen Off timers in the Power Profile.

5. Deployment Workflow

  1. Develop: Build the Launcher.exe and the TargetApp.exe.

  2. Configure: Create a standard user account on Win10.

  3. Execute: Run a PowerShell script to set the Shell registry key and enable AutoAdminLogon.

  4. Test: Reboot. The system should go directly into your Launcher and start your app.