Optimize visual experience when using RemoteFX
Verified with Windows 11 25H2 — updated on July 30, 2026
Supported on: Windows 7 or Windows Server 2008 R2 (and their subsequent Service Packs) only
Path in the GPO console
Computer Configuration\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Remote Session Environment\RemoteFX for Windows Server 2008 R2 Description
This policy setting allows you to specify the visual experience that remote users will have in Remote Desktop Connection (RDC) connections that use RemoteFX. You can use this policy to balance the network bandwidth usage with the type of graphics experience that is delivered. Depending on the requirements of your users, you can reduce network bandwidth usage by reducing the screen capture rate. You can also reduce network bandwidth usage by reducing the image quality (increasing the amount of image compression that is performed). If you have a higher than average bandwidth network, you can maximize the utilization of bandwidth by selecting the highest setting for screen capture rate and the highest setting for image quality. By default, Remote Desktop Connection sessions that use RemoteFX are optimized for a balanced experience over LAN conditions. If you disable or do not configure this policy setting, Remote Desktop Connection sessions that use RemoteFX will be the same as if the medium screen capture rate and the medium image compression settings were selected (the default behavior).
Registry
Software\Policies\Microsoft\Windows NT\Terminal Services\ MDM / Intune (CSP)
./Device/Vendor/MSFT/Policy/Config/ADMX_TerminalServer/TS_RemoteDesktopVirtualGraphics Microsoft Learn documentation Mapping data: Microsoft Learn (CC BY 4.0)
Export Builder
BETAConfigure the state, scope and options, then generate .reg, PowerShell, Intune and SCCM outputs — or add the setting to a multi-setting collection.
These exports write the registry — this is not a managed GPO. ⓘ
.reg file
Windows Registry Editor Version 5.00
; Exported from gporais.com
; Policy: Optimize visual experience when using RemoteFX
; State: Enabled
; Supported on: Windows 7 or Windows Server 2008 R2 (and their subsequent Service Packs) only
[HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\Terminal Services]
"VGOptimization_CaptureFrameRate"=dword:00000002
"VGOptimization_CompressionRatio"=dword:00000002 More formats (PowerShell, Intune, SCCM)
PowerShell
# Exported from gporais.com
# Policy: Optimize visual experience when using RemoteFX
# State: Enabled
# Supported on: Windows 7 or Windows Server 2008 R2 (and their subsequent Service Packs) only
$path = 'HKLM:\Software\Policies\Microsoft\Windows NT\Terminal Services'
New-Item -Path $path -Force | Out-Null
Set-ItemProperty -Path $path -Name 'VGOptimization_CaptureFrameRate' -Value 2 -Type DWord
Set-ItemProperty -Path $path -Name 'VGOptimization_CompressionRatio' -Value 2 -Type DWord Intune XML
OMA-URI: ./Device/Vendor/MSFT/Policy/Config/ADMX_TerminalServer/TS_RemoteDesktopVirtualGraphics
Data type: String
Value:
<enabled/>
<data id="TS_RemoteDesktopVirtualGraphics_ScreenCaptureRate" value="2"/>
<data id="TS_RemoteDesktopVirtualGraphics_ScreenImageQuality" value="2"/> Intune Remediation
# === Detection script ===
# Exported from gporais.com
# Policy: Optimize visual experience when using RemoteFX
# State: Enabled
# Supported on: Windows 7 or Windows Server 2008 R2 (and their subsequent Service Packs) only
function Test-RegistryValue {
param(
[Parameter(Mandatory = $true)][string]$Path,
[Parameter(Mandatory = $true)][string]$Name,
[object]$Expected,
[ValidateSet('String', 'DWord', 'MultiString')][string]$Kind = 'String',
[switch]$Absent
)
try {
$item = Get-ItemProperty -LiteralPath $Path -Name $Name -ErrorAction Stop
} catch {
return $Absent.IsPresent
}
if ($Absent.IsPresent) { return $false }
$actual = $item.$Name
if ($Kind -eq 'DWord') { return ([int64]$actual) -eq ([int64]$Expected) }
if ($Kind -eq 'MultiString') {
$actualValues = @($actual)
$expectedValues = @($Expected)
if ($actualValues.Count -ne $expectedValues.Count) { return $false }
for ($i = 0; $i -lt $expectedValues.Count; $i++) {
if ([string]$actualValues[$i] -ne [string]$expectedValues[$i]) { return $false }
}
return $true
}
return [string]$actual -eq [string]$Expected
}
$checks = @(
(Test-RegistryValue -Path 'HKLM:\Software\Policies\Microsoft\Windows NT\Terminal Services' -Name 'VGOptimization_CaptureFrameRate' -Expected 2 -Kind DWord)
(Test-RegistryValue -Path 'HKLM:\Software\Policies\Microsoft\Windows NT\Terminal Services' -Name 'VGOptimization_CompressionRatio' -Expected 2 -Kind DWord)
)
if ($checks -notcontains $false) {
Write-Output 'Compliant'
exit 0
}
Write-Output 'Non-compliant'
exit 1
# === Remediation script ===
# Exported from gporais.com
# Policy: Optimize visual experience when using RemoteFX
# State: Enabled
# Supported on: Windows 7 or Windows Server 2008 R2 (and their subsequent Service Packs) only
$path = 'HKLM:\Software\Policies\Microsoft\Windows NT\Terminal Services'
New-Item -Path $path -Force | Out-Null
Set-ItemProperty -Path $path -Name 'VGOptimization_CaptureFrameRate' -Value 2 -Type DWord
Set-ItemProperty -Path $path -Name 'VGOptimization_CompressionRatio' -Value 2 -Type DWord SCCM scripts
# Exported from gporais.com
# Policy: Optimize visual experience when using RemoteFX
# State: Enabled
# Supported on: Windows 7 or Windows Server 2008 R2 (and their subsequent Service Packs) only
# SCCM Configuration Item guidance:
# Create a Configuration Item of type "Setting: Script".
# Discovery script: use the Detection script below.
# Remediation script: use the Remediation script below.
# Compliance rule: the Discovery script output equals 'Compliant'.
# === Detection script ===
# Exported from gporais.com
# Policy: Optimize visual experience when using RemoteFX
# State: Enabled
# Supported on: Windows 7 or Windows Server 2008 R2 (and their subsequent Service Packs) only
function Test-RegistryValue {
param(
[Parameter(Mandatory = $true)][string]$Path,
[Parameter(Mandatory = $true)][string]$Name,
[object]$Expected,
[ValidateSet('String', 'DWord', 'MultiString')][string]$Kind = 'String',
[switch]$Absent
)
try {
$item = Get-ItemProperty -LiteralPath $Path -Name $Name -ErrorAction Stop
} catch {
return $Absent.IsPresent
}
if ($Absent.IsPresent) { return $false }
$actual = $item.$Name
if ($Kind -eq 'DWord') { return ([int64]$actual) -eq ([int64]$Expected) }
if ($Kind -eq 'MultiString') {
$actualValues = @($actual)
$expectedValues = @($Expected)
if ($actualValues.Count -ne $expectedValues.Count) { return $false }
for ($i = 0; $i -lt $expectedValues.Count; $i++) {
if ([string]$actualValues[$i] -ne [string]$expectedValues[$i]) { return $false }
}
return $true
}
return [string]$actual -eq [string]$Expected
}
$checks = @(
(Test-RegistryValue -Path 'HKLM:\Software\Policies\Microsoft\Windows NT\Terminal Services' -Name 'VGOptimization_CaptureFrameRate' -Expected 2 -Kind DWord)
(Test-RegistryValue -Path 'HKLM:\Software\Policies\Microsoft\Windows NT\Terminal Services' -Name 'VGOptimization_CompressionRatio' -Expected 2 -Kind DWord)
)
if ($checks -notcontains $false) {
Write-Output 'Compliant'
exit 0
}
Write-Output 'Non-compliant'
exit 1
# === Remediation script ===
# Exported from gporais.com
# Policy: Optimize visual experience when using RemoteFX
# State: Enabled
# Supported on: Windows 7 or Windows Server 2008 R2 (and their subsequent Service Packs) only
$path = 'HKLM:\Software\Policies\Microsoft\Windows NT\Terminal Services'
New-Item -Path $path -Force | Out-Null
Set-ItemProperty -Path $path -Name 'VGOptimization_CaptureFrameRate' -Value 2 -Type DWord
Set-ItemProperty -Path $path -Name 'VGOptimization_CompressionRatio' -Value 2 -Type DWord Building a multi-setting collection? Add this setting and generate combined .reg / PowerShell / GPO scripts.