Skip to content

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.

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:

  1. Press Win + R and type regedit
  2. Navigate to: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\Configuration
  3. Find the ProductReleaseIds value
  4. Double-click to edit and append , O365ProPlusRetail to the existing value
  5. 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

  1. Restart Microsoft Teams
  2. Open any Office file in Teams
  3. 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

  1. Close Microsoft Teams completely
  2. Navigate to the configuration file location above
  3. Open app_settings.json in a text editor
  4. Find the line: "open_file_in_desktop_app": false
  5. Change it to: "open_file_in_desktop_app": true
  6. 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:

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
- Or run the script with:
powershell.exe -ExecutionPolicy Bypass -File .\script.ps1

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:

  1. Create a new Configuration Profile
  2. Select Templates > Custom
  3. Add an OMA-URI setting:
  4. Name: Enable Teams Desktop App Opening
  5. OMA-URI: ./Device/Vendor/MSFT/Registry/HKLM/SOFTWARE/Microsoft/Office/ClickToRun/Configuration/ProductReleaseIds
  6. Data type: String
  7. Value: O365BusinessRetail, O365ProPlusRetail

Group Policy

For Active Directory environments, deploy via GPO using registry preferences.


Last updated: February 2026