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 check & run — look for mstsc.exe in System32 / SysWOW64.
SFC / DISM — try automated system repairs.
Copy from WinSxS — extract the legit copies stored in Windows’ component store.
Restore .MUI — ensure the language resource (e.g. en-US\mstsc.exe.mui) exists.
Register DLL & fix App Path — register mstscax.dll, add App Path registry key.
Copy from another PC (same Windows build) — safe fallback.
Repair install (in-place upgrade) — guaranteed Microsoft-supported fix.
Third-party remote tools — temporary alternatives if you need access immediately.
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:
SFC / DISM quick health:
Sometimes 64-bit path is missing but 32-bit exists:
Run PowerShell as Administrator.
If files are corrupt or missing, these repair from the component store:
If mstscax.dll exists but isn’t registered:
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.
Windows stores component copies in C:\Windows\WinSxS. Use PowerShell (Admin) to locate & copy the correct .MUI:
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.
Protected folders belong to TrustedInstaller. Safe method to copy and restore ownership:
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.
This is the final solution that worked: placing a valid
mstsc.exe.mui(English US) intoC:\Windows\System32\en-US, restoring ownership, then launchingmstsc.exe.
Do an in-place Repair Install (Windows setup) — it will rebuild WinSxS and restore all official language resources without deleting apps or files:
Download Windows 11 ISO from Microsoft (official): https://www.microsoft.com/software-download/windows11
Mount the ISO, run setup.exe
Choose Keep personal files and apps and proceed.
When finished, mstsc will be restored.
This is the most reliable Microsoft-supported repair.
While you fix mstsc, use:
Chrome Remote Desktop
AnyDesk
RustDesk
These are safe third-party remote-access tools that do not require mstsc.exe.
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).
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
You verified mstsc.exe came back but failed due to missing mstsc.exe.mui.
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.
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.
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: