How to Fix “Windows cannot find C:\Windows\System32\mstsc.exe” / mstsc.exe.MUI Missing — Full Solutions (Many Ways) – BisonKB

How to Fix “Windows cannot find C:\Windows\System32\mstsc.exe” / mstsc.exe.MUI Missing — Full Solutions (Many Ways)

Posted on 15-10-2025 | Category: General | Views: 90


Remote Desktop (mstsc.exe) problems usually come from one of three root causes: the mstsc.exe binary is missing, its supporting DLLs (mstscax.dll) are missing / unregistered, or the language resource (.MUI) file for your system language is missing. Below is a complete, practical guide with every safe method I’d try — from quick checks to final, guaranteed fixes — plus the working final solution that restored Remote Desktop for you.


Quick summary of approaches (choose by urgency)

  1. Quick check & run — look for mstsc.exe in System32 / SysWOW64.

  2. SFC / DISM — try automated system repairs.

  3. Copy from WinSxS — extract the legit copies stored in Windows’ component store.

  4. Restore .MUI — ensure the language resource (e.g. en-US\mstsc.exe.mui) exists.

  5. Register DLL & fix App Path — register mstscax.dll, add App Path registry key.

  6. Copy from another PC (same Windows build) — safe fallback.

  7. Repair install (in-place upgrade) — guaranteed Microsoft-supported fix.

  8. Third-party remote tools — temporary alternatives if you need access immediately.


1) Diagnose first — what to run now (Admin PowerShell / CMD)

Run these and copy their outputs if you need help:

  • Search for binary copies (PowerShell Admin):

Get-ChildItem -Path C:\ -Filter mstsc.exe -Recurse -ErrorAction SilentlyContinue | Select-Object FullName Get-ChildItem -Path C:\Windows\WinSxS -Filter mstsc.exe.mui -Recurse -ErrorAction SilentlyContinue | Select-Object FullName

  • Simple existence checks:

Test-Path "C:\Windows\System32\mstsc.exe" Test-Path "C:\Windows\System32\en-US\mstsc.exe.mui" where mstsc
  • SFC / DISM quick health:

sfc /scannow DISM /Online /Cleanup-Image /RestoreHealth


2) Fast fixes (try these in order)

A — Copy mstsc.exe from SysWOW64 → System32 (if present)

Sometimes 64-bit path is missing but 32-bit exists:

Copy-Item "C:\Windows\SysWOW64\mstsc.exe" "C:\Windows\System32\mstsc.exe" -Force

Run PowerShell as Administrator.

B — Run SFC then DISM

If files are corrupt or missing, these repair from the component store:

DISM /Online /Cleanup-Image /RestoreHealth sfc /scannow

C — Re-register Remote Desktop ActiveX control

If mstscax.dll exists but isn’t registered:

cd /d C:\Windows\System32 regsvr32 mstscax.dll cd /d C:\Windows\SysWOW64 regsvr32 mstscax.dll

D — Create App Path so Windows finds mstsc reliably

New-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\mstsc.exe" -Force | Out-Null Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\mstsc.exe" -Name "(default)" -Value "C:\Windows\System32\mstsc.exe" Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\mstsc.exe" -Name "Path" -Value "C:\Windows\System32"


3) If mstsc.exe exists but shows:

“The system cannot find the file specified. C:\Windows\System32<LANG_NAME>\mstsc.exe.MUI”
That means the .MUI file for your system language (for example en-US) is missing. Windows expects it at C:\Windows\System32\<LANG>\mstsc.exe.mui.

Safe ways to restore the .MUI

A — Extract from WinSxS (best quick local source)

Windows stores component copies in C:\Windows\WinSxS. Use PowerShell (Admin) to locate & copy the correct .MUI:

# Example for en-US / amd64 & wow64 $source64 = Get-ChildItem -Path "C:\Windows\WinSxS" -Filter "mstsc.exe.mui" -Recurse -ErrorAction SilentlyContinue | Where-Object { $_.FullName -match "amd64" -and $_.FullName -match "en-US" } | Select-Object -First 1 $source32 = Get-ChildItem -Path "C:\Windows\WinSxS" -Filter "mstsc.exe.mui" -Recurse -ErrorAction SilentlyContinue | Where-Object { $_.FullName -match "wow64" -and $_.FullName -match "en-US" } | Select-Object -First 1 # Create language folders & copy New-Item -Path "C:\Windows\System32\en-US" -ItemType Directory -Force | Out-Null Copy-Item $source64.FullName "C:\Windows\System32\en-US\mstsc.exe.mui" -Force New-Item -Path "C:\Windows\SysWOW64\en-US" -ItemType Directory -Force | Out-Null Copy-Item $source32.FullName "C:\Windows\SysWOW64\en-US\mstsc.exe.mui" -Force

B — If WinSxS lacks the English MUI — copy from another PC

Get C:\Windows\System32\en-US\mstsc.exe.mui from another Windows 11 Pro 22H2 machine with the same build (or same 22H2 family — builds close to 22621 usually work). Copy to your C:\Windows\System32\en-US\ (requires admin).

Do NOT download random mstsc.exe.mui files from the internet.

C — Fix file permissions to allow copy (TrustedInstaller-owner)

Protected folders belong to TrustedInstaller. Safe method to copy and restore ownership:

# Run as Admin; adjust $source to your .mui location (e.g., C:\a\mstsc.exe.mui) $source = "C:\a\mstsc.exe.mui" $targetDir = "C:\Windows\System32\en-US" New-Item -Path $targetDir -ItemType Directory -Force | Out-Null # Take ownership & grant Admins temporarily takeown /F $targetDir /A /R icacls $targetDir /grant Administrators:F /T # Copy Copy-Item $source (Join-Path $targetDir "mstsc.exe.mui") -Force # Restore owner icacls $targetDir /setowner "NT SERVICE\TrustedInstaller" /T


4) Automated script (the final working solution we used)

This is the full block that you can run as Administrator if you already have mstsc.exe.mui accessible locally (for example at C:\a\mstsc.exe.mui). It:

  • Ensures folders exist,

  • Takes ownership temporarily,

  • Copies to both System32 and SysWOW64 en-US folders,

  • Restores TrustedInstaller ownership,

  • Launches mstsc.exe if successful.

# === Restore mstsc.exe.mui from C:\a\mstsc.exe.mui === $source = "C:\a\mstsc.exe.mui" $target64dir = "C:\Windows\System32\en-US" $target32dir = "C:\Windows\SysWOW64\en-US" $target64 = Join-Path $target64dir "mstsc.exe.mui" $target32 = Join-Path $target32dir "mstsc.exe.mui" if (-not (Test-Path $source)) { Write-Host "ERROR: Source not found: $source"; exit 1 } foreach ($d in @($target64dir, $target32dir)) { New-Item -Path $d -ItemType Directory -Force | Out-Null takeown /F $d /A /R | Out-Null icacls $d /grant Administrators:F /T | Out-Null } Copy-Item -Path $source -Destination $target64 -Force -ErrorAction Stop Write-Host "Copied to $target64" if (Test-Path "C:\Windows\SysWOW64") { Try { Copy-Item -Path $source -Destination $target32 -Force; Write-Host "Copied to $target32" } Catch {} } # Restore owner icacls $target64dir /setowner "NT SERVICE\TrustedInstaller" /T | Out-Null if (Test-Path $target32dir) { icacls $target32dir /setowner "NT SERVICE\TrustedInstaller" /T | Out-Null } if (Test-Path $target64) { Start-Process "C:\Windows\System32\mstsc.exe"; Write-Host "Done." } else { Write-Host "MUI not copied." }

This is the final solution that worked: placing a valid mstsc.exe.mui (English US) into C:\Windows\System32\en-US, restoring ownership, then launching mstsc.exe.


5) If you can’t get the MUI file (no other PC available)

Do an in-place Repair Install (Windows setup) — it will rebuild WinSxS and restore all official language resources without deleting apps or files:

  1. Download Windows 11 ISO from Microsoft (official): https://www.microsoft.com/software-download/windows11

  2. Mount the ISO, run setup.exe

  3. Choose Keep personal files and apps and proceed.

  4. When finished, mstsc will be restored.

This is the most reliable Microsoft-supported repair.


6) Temporary alternatives to get remote access now

While you fix mstsc, use:

  • Chrome Remote Desktop

  • AnyDesk

  • RustDesk
    These are safe third-party remote-access tools that do not require mstsc.exe.


7) Safety & cautions

  • Never download mstsc.exe, mstscax.dll or .mui files from untrusted websites. Those can be malware.

  • Only copy files from a trusted machine (same Windows edition/build) or extract from your own C:\Windows\WinSxS.

  • Take ownership temporarily only when necessary and restore TrustedInstaller owner afterwards (commands above handle that).


8) Troubleshooting checklist (if still failing)

  • Confirm C:\Windows\System32\en-US\mstsc.exe.mui exists (Test-Path).

  • Confirm mstsc.exe exists in C:\Windows\System32.

  • Try regsvr32 mstscax.dll in System32 and SysWOW64.

  • Re-run sfc /scannow after copying MUI.

  • Reboot after ownership/permission changes.

  • If errors remain, gather logs:

    • findstr /c:"[SR]" %windir%\logs\cbs\cbs.log > "%userprofile%\Desktop\sfclogs.txt"

    • Get-Content "C:\Windows\Logs\DISM\dism.log" -Tail 80


Final recommendation (what worked for you)

  1. You verified mstsc.exe came back but failed due to missing mstsc.exe.mui.

  2. The working fix was to obtain a valid mstsc.exe.mui for en-US (either from WinSxS or another same-build PC) and copy it to C:\Windows\System32\en-US\mstsc.exe.mui.

  3. Use the PowerShell script above (or the single-block script I gave earlier) to safely take ownership, copy the file, restore TrustedInstaller, and launch mstsc.exe.

  4. If you cannot obtain the MUI, perform a Microsoft in-place repair install — that will fix everything.


==================================

I created the PowerShell script and packaged it into a ZIP you can download and run.

-------------------------------
Restore-Mstsc-MUI.ps1

----------------------------

# Restore-Mstsc-MUI.ps1

# Safe, ready-to-run PowerShell script to copy mstsc.exe.mui into System32\en-US and SysWOW64\en-US

# Source file path is set to C:\a\mstsc.exe.mui - change $source if your file is elsewhere.

# Run this script AS AN ADMIN (right-click PowerShell -> Run as Administrator) or it will exit.


# --- Elevation check ---

$principal = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())

if (-not $principal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {

    Write-Host "ERROR: This script must be run as Administrator. Right-click PowerShell and choose 'Run as administrator'." -ForegroundColor Red

    exit 1

}


# --- Paths (edit $source if your .mui is in another location) ---

$source = "C:\a\mstsc.exe.mui"

$target64dir = "C:\Windows\System32\en-US"

$target32dir = "C:\Windows\SysWOW64\en-US"

$target64 = Join-Path $target64dir "mstsc.exe.mui"

$target32 = Join-Path $target32dir "mstsc.exe.mui"


Write-Host "Source file: $source"

if (-not (Test-Path $source)) {

    Write-Host "ERROR: Source file not found. Place mstsc.exe.mui at $source or edit this script to point to the correct path." -ForegroundColor Red

    exit 1

}


# --- Create target folders if missing ---

foreach ($d in @($target64dir, $target32dir)) {

    try {

        New-Item -Path $d -ItemType Directory -Force | Out-Null

        Write-Host "Ensured folder exists: $d"

    } catch {

        Write-Host "Warning: Could not ensure folder $d : $($_.Exception.Message)" -ForegroundColor Yellow

    }

}


# --- Take ownership & grant Administrators full control for the duration of the copy ---

foreach ($d in @($target64dir, $target32dir)) {

    try {

        Write-Host "Taking ownership (temporary) of $d ..." -ForegroundColor Cyan

        & takeown /F $d /A /R | Out-Null

        & icacls $d /grant Administrators:F /T | Out-Null

    } catch {

        Write-Host "Warning: Could not change permissions on $d : $($_.Exception.Message)" -ForegroundColor Yellow

    }

}


# --- Copy the MUI to System32 (64-bit) ---

try {

    Copy-Item -Path $source -Destination $target64 -Force -ErrorAction Stop

    Write-Host "Copied to $target64" -ForegroundColor Green

} catch {

    Write-Host "Failed to copy to $target64 : $($_.Exception.Message)" -ForegroundColor Red

}


# --- Copy to SysWOW64 (32-bit) if present ---

if (Test-Path "C:\Windows\SysWOW64") {

    try {

        Copy-Item -Path $source -Destination $target32 -Force -ErrorAction Stop

        Write-Host "Copied to $target32" -ForegroundColor Green

    } catch {

        Write-Host "Failed to copy to $target32 : $($_.Exception.Message)" -ForegroundColor Yellow

    }

} else {

    Write-Host "SysWOW64 not present on this system; skipping 32-bit copy." -ForegroundColor Cyan

}


# --- Verification ---

$ok64 = Test-Path $target64

$ok32 = Test-Path $target32

Write-Host "`nVerification results:"

Write-Host "System32\en-US\mstsc.exe.mui : $ok64"

Write-Host "SysWOW64\en-US\mstsc.exe.mui  : $ok32"


# --- Restore ownership to TrustedInstaller (best-effort) ---

try {

    Write-Host "Restoring owner to TrustedInstaller for target folders (best-effort)..." -ForegroundColor Cyan

    icacls $target64dir /setowner "NT SERVICE\TrustedInstaller" /T | Out-Null

    if (Test-Path "C:\Windows\SysWOW64") {

        icacls $target32dir /setowner "NT SERVICE\TrustedInstaller" /T | Out-Null

    }

    Write-Host "Ownership restored (best-effort)." -ForegroundColor Green

} catch {

    Write-Host "Warning: could not restore ownership automatically: $($_.Exception.Message)" -ForegroundColor Yellow

}


# --- Launch mstsc if copy succeeded ---

if ($ok64) {

    Write-Host "`nLaunching Remote Desktop..." -ForegroundColor Green

    Start-Process "C:\Windows\System32\mstsc.exe"

    exit 0

} elseif ($ok32) {

    Write-Host "`nLaunching 32-bit Remote Desktop (SysWOW64)..." -ForegroundColor Green

    Start-Process "C:\Windows\SysWOW64\mstsc.exe"

    exit 0

} else {

    Write-Host "`nERROR: MUI not copied to expected locations. Consider using another PC with the same Windows build or perform an in-place repair install." -ForegroundColor Red

    exit 1

}

===================================================================================

How to use it:

  1. Download and extract the ZIP.

  2. Make sure C:\a\mstsc.exe.mui exists (or edit the .ps1 to point to the correct source path).

  3. Right-click PowerShellRun as administrator.

  4. Run:

    Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass .\Restore-Mstsc-MUI.ps1
  5. The script will copy the MUI file into place, restore ownership, and launch Remote Desktop if successful.

Tell me the result or paste any error output and I’ll guide the next step. 

Tags:
mstsc.exe Remote Desktop mstsc.exe.mui WinSxS SFC DISM mstscax.dll SysWOW64 System32 en-US PowerShell regsvr32 takeown icacls TrustedInstaller in-place repair Windows 11 22H2 Win + R mstsc App Paths copy MUI repair install component s
Related Articles
AI-Recommended Articles
Was this article helpful?
← Back to Home
Advertisement