How can we enable full Windows desktop access from within a custom shell on Windows 11 IoT Enterprise?

Shiv 20 Reputation points
2025-10-06T09:17:23.1433333+00:00

We’re using Shell Launcher to replace the default shell with our custom application. The custom shell launches correctly, and everything works as expected.

However, our application includes a “Run Windows” option that should allow users to temporarily switch back to the full Windows desktop environment (with taskbar, start menu, and desktop icons). This no longer works, launching explorer.exe only opens a file explorer window, not the full desktop shell.

Is there a recommended or supported way to re-enable full Windows desktop access from within a custom shell on Windows 11 IoT Enterprise?

Windows for business | Windows for IoT
0 comments No comments
{count} votes

Answer accepted by question author
  1. Domic Vo 7,830 Reputation points Independent Advisor
    2025-10-06T09:49:49.0033333+00:00

    Dear Shiv,

    Launching explorer.exe from within a custom shell no longer restores the full desktop experience (taskbar, Start menu, desktop icons). Instead, it opens a standalone File Explorer window. This behavior is expected in Shell Launcher environments, as the system suppresses the standard shell components unless explicitly configured otherwise.

    Here are Recommended approach:

    To temporarily switch back to the full Windows shell experience, you’ll need to programmatically change the shell back to explorer.exe and restart the user session. Here’s how you can approach it:

    1. Use Shell Launcher APIs or PowerShell to switch shell You can use Set-AssignedAccess or Shell Launcher v2 configuration to reassign the shell to explorer.exe.
    2. Trigger a logoff/logon cycle After changing the shell, the user session must be restarted for the change to take effect. This can be done via script or user prompt.
    3. Design your “Run Windows” option to automate this flow
      • Behind the scenes, your app can: Update the shell assignment to explorer.exe Prompt the user to save work Log off the session Upon next login, the full Windows shell will be active

    Simply launching explorer.exe from within a custom shell won’t restore the full desktop environment, as the system doesn’t treat it as the shell unless it’s assigned at session start.

    If this guidance proves helpful, feel free to click “Accept Answer” so we know we’re heading in the right direction 😊. And of course, I’m here if you need further clarification or support. T&B, Domic Vo


1 additional answer

Sort by: Most helpful
  1. Shiv 20 Reputation points
    2025-10-20T09:57:21.49+00:00

    Answer from Microsoft (support email):

    1- Shell Launcher v2 and Assigned Access APIs modify machine-level settings under HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\ShellLauncher.

    2- These changes affect all users, so Windows restricts them to SYSTEM or an elevated process with the right privileges.

    3- Simply running as an Administrator often isn’t enough because the Assigned Access service enforces the policy.

    Options and might work: Split Privilege Model

    • Keep your main app running under the user account.
    • Create a small helper service running as SYSTEM (or LocalSystem) that listens for requests from your app (via IPC or named pipe).
    • When the user selects “Run Windows,” the helper performs:
      • Shell reassignment to explorer.exe using Shell Launcher APIs or PowerShell.
      • Initiates logoff.
    • This is the most common pattern for kiosk scenarios.

    Use Task Scheduler with Highest Privileges

    • Your app can trigger a scheduled task configured to run as SYSTEM.
    • The task executes the shell switch and logoff.

    This avoids keeping a persistent SYSTEM service but still uses SYSTEM for the sensitive operation.

    0 comments No comments

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.