Enabling "Open in Desktop App" in Microsoft Teams
When users try to open Office files directly in Microsoft Teams, they may find the "Open in Desktop App" option is missing. This guide provides solutions to enable this functionality without requiring a license upgrade.
Problem Description
Users with Microsoft 365 Business licenses (typically O365BusinessRetail) don't see the option to open files in their desktop Office applications when clicking files in Teams. According to Microsoft Learn documentation, this is often due to the Office product ID not being recognized as supporting this feature.
License Consideration
While Microsoft's official solution may suggest upgrading to a higher-tier license, the workarounds below enable the functionality without additional licensing costs.
Solution 1: Registry Modification (Recommended)
This method adds the O365ProPlusRetail product ID to your Office installation's registry, enabling the "Open in Desktop App" functionality in Teams without licensing issues.
How It Works
By adding O365ProPlusRetail to the ProductReleaseIds registry value, Teams recognizes your Office installation as supporting desktop app integration. The resulting value will be: O365BusinessRetail, O365ProPlusRetail.
PowerShell Script
Run the following PowerShell script as Administrator:
$registryPath = "HKLM:\SOFTWARE\Microsoft\Office\ClickToRun\Configuration"
$valueName = "ProductReleaseIds"
$valueToAdd = "O365ProPlusRetail"
try {
if (-not (Test-Path -Path $registryPath)) {
Write-Output "Registry path does not exist: $registryPath"
} else {
$existingValuesString = Get-ItemPropertyValue -Path $registryPath -Name $valueName -ErrorAction SilentlyContinue
$currentValuesArray = @()
if (-not [string]::IsNullOrWhiteSpace($existingValuesString)) {
$currentValuesArray = @($existingValuesString.Split(',') | ForEach-Object { $_.Trim() } | Where-Object { $_ })
}
if ($currentValuesArray -contains $valueToAdd) {
Write-Output "The value '$valueToAdd' already exists in '$valueName'. No changes made."
} else {
$updatedValuesArray = $currentValuesArray + $valueToAdd
$newValueString = $updatedValuesArray -join ', '
Set-ItemProperty -Path $registryPath -Name $valueName -Value $newValueString -Type String -Force
Write-Output "Successfully updated '$valueName'. New value: $newValueString"
}
}
}
catch {
Write-Output "An error occurred: $($_.Exception.Message)"
}
Manual Registry Edit
If you prefer to edit the registry manually:
- Press
Win + Rand typeregedit - Navigate to:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\Configuration - Find the
ProductReleaseIdsvalue - Double-click to edit and append
, O365ProPlusRetailto the existing value - Click OK and close Registry Editor
Registry Backup
Always backup your registry before making changes. You can export the key by right-clicking it and selecting "Export".
Verification
- Restart Microsoft Teams
- Open any Office file in Teams
- The "Open in Desktop App" option should now be available
Solution 2: Configuration File Modification (Alternative)
This method modifies the Teams configuration file to enable desktop app opening. However, this approach is less reliable and may not work in all scenarios.
Use with Caution
This method does not always work consistently. The registry method (Solution 1) is more reliable. Additionally, the option may not visually appear in Teams, but clicking files will open them in desktop apps.
Configuration File Location
The Teams configuration file is located at:
C:\Users\<YourUsername>\AppData\Local\Packages\MSTeams_8wekyb3d8bbwe\LocalCache\Microsoft\MSTeams\app_settings.json
Manual Edit
- Close Microsoft Teams completely
- Navigate to the configuration file location above
- Open
app_settings.jsonin a text editor - Find the line:
"open_file_in_desktop_app": false - Change it to:
"open_file_in_desktop_app": true - Save the file and restart Teams
Automated PowerShell Script
This script automatically closes Teams, modifies the configuration, and handles errors:
# Stop Teams processes
$teamsProcesses = @(
@{ Name = 'ms-teams'; PathHint = 'New Teams (UWP/MSIX)' },
@{ Name = 'Teams'; PathHint = 'Classic Teams' }
)
$processStopped = $false
foreach ($procInfo in $teamsProcesses) {
Write-Output "Checking for process: $($procInfo.Name) ($($procInfo.PathHint))..."
$processes = Get-Process -Name $procInfo.Name -ErrorAction SilentlyContinue
if ($null -ne $processes) {
Write-Output "Attempting to stop process: $($procInfo.Name)..."
Stop-Process -Name $procInfo.Name -Force -ErrorAction SilentlyContinue
Start-Sleep -Seconds 5
if ($null -eq (Get-Process -Name $procInfo.Name -ErrorAction SilentlyContinue)) {
Write-Output "Process $($procInfo.Name) stopped successfully."
$processStopped = $true
} else {
Write-Output "Warning: Failed to stop process $($procInfo.Name)."
}
} else {
Write-Output "Process $($procInfo.Name) not found running."
}
}
if (-not $processStopped) {
Write-Output "No running Teams process found or stopped. Exiting script as precaution."
return
}
# Define the path to the Teams settings file
$settingsFilePath = Join-Path -Path $env:USERPROFILE -ChildPath 'AppData\Local\Packages\MSTeams_8wekyb3d8bbwe\LocalCache\Microsoft\MSTeams\app_settings.json'
$propertyName = 'open_file_in_desktop_app'
# Check if the settings file exists
if (-not (Test-Path -Path $settingsFilePath -PathType Leaf)) {
Write-Output "Error: Settings file not found at '$settingsFilePath'"
return
}
# Read and parse the JSON settings file
try {
$jsonContent = Get-Content -Path $settingsFilePath -Raw -ErrorAction Stop
$settingsObject = $jsonContent | ConvertFrom-Json -ErrorAction Stop
}
catch {
Write-Output "Error: Failed to read or parse JSON file at '$settingsFilePath'."
Write-Output "Error details: $($_.Exception.Message)"
return
}
# Check if the target property exists
if ($null -ne $settingsObject -and $settingsObject.PSObject.Properties.Name -contains $propertyName) {
$currentValue = $settingsObject.$propertyName
Write-Output "Current value of '$propertyName' is: $currentValue"
if ($currentValue -eq $false) {
Write-Output "Setting '$propertyName' to 'true'..."
$settingsObject.$propertyName = $true
try {
$updatedJsonContent = $settingsObject | ConvertTo-Json -Depth 10 -Compress -ErrorAction Stop
Set-Content -Path $settingsFilePath -Value $updatedJsonContent -Encoding UTF8 -ErrorAction Stop
Write-Output "'$propertyName' has been updated successfully in '$settingsFilePath'."
}
catch {
Write-Output "Error: Failed to write updated settings back to '$settingsFilePath'."
Write-Output "Error details: $($_.Exception.Message)"
return
}
}
elseif ($currentValue -eq $true) {
Write-Output "'$propertyName' is already 'true'. No changes made."
}
else {
Write-Output "Warning: '$propertyName' has an unexpected value '$currentValue' (Type: $($currentValue.GetType().Name)). Expected a boolean value. No changes made."
}
}
else {
if ($null -eq $settingsObject) {
Write-Output "Error: The settings file '$settingsFilePath' parsed to a null object."
} else {
Write-Output "Error: Property '$propertyName' not found in '$settingsFilePath'."
}
return
}
Comparison of Solutions
| Feature | Registry Method | Config File Method |
|---|---|---|
| Reliability | High | Low to Medium |
| Visual Option | Yes, appears in Teams | No, but files open in desktop |
| Persistence | Permanent | May reset after updates |
| Complexity | Simple registry edit | Requires Teams restart |
| Recommendation | ✅ Recommended | ⚠️ Use as fallback |
Troubleshooting
Option Still Not Appearing
Problem: After applying the registry fix, the option doesn't appear.
Solutions: - Verify the registry value was added correctly - Completely close and restart Teams (check Task Manager) - Restart your computer - Check Office is fully updated to the latest version
Script Execution Policy Error
Problem: PowerShell script won't run due to execution policy.
Solutions: - Run PowerShell as Administrator - Temporarily bypass execution policy:
- Or run the script with:Teams Won't Close
Problem: Teams process won't terminate.
Solutions:
- Open Task Manager (Ctrl + Shift + Esc)
- Find all Teams or ms-teams processes
- Select each and click "End Task"
- If still running, restart your computer
Configuration File Not Found
Problem: The app_settings.json file doesn't exist.
Solutions: - Ensure you're using New Teams (not Classic Teams) - Check the path is correct for your username - Teams may need to be opened at least once to create the file - Use Solution 1 (Registry Method) instead
Best Practices
- Use Registry Method First: It's more reliable and persistent
- Test Before Deployment: Test on a single machine before rolling out organization-wide
- Deploy via Intune: For enterprise environments, deploy the registry change via Intune configuration profiles
- Document Changes: Keep a record of which machines have been modified
- Monitor Updates: Office and Teams updates may affect this functionality
Deployment at Scale
Intune Configuration Profile
For organizations using Microsoft Intune:
- Create a new Configuration Profile
- Select Templates > Custom
- Add an OMA-URI setting:
- Name: Enable Teams Desktop App Opening
- OMA-URI:
./Device/Vendor/MSFT/Registry/HKLM/SOFTWARE/Microsoft/Office/ClickToRun/Configuration/ProductReleaseIds - Data type: String
- Value:
O365BusinessRetail, O365ProPlusRetail
Group Policy
For Active Directory environments, deploy via GPO using registry preferences.
Related Documentation
- Microsoft Learn: Open Files in Desktop App
- Microsoft Teams File Handling
- Office ClickToRun Configuration
Last updated: February 2026