Skip to main content
Virtual Display Driver enables seamless remote desktop experiences by providing virtual monitors that can be accessed remotely, even when physical displays are disconnected or unavailable.

Overview

VDD is essential for remote desktop scenarios because:
  • No physical display required: Access full desktop functionality remotely
  • Custom resolutions: Match your remote client’s screen size exactly
  • Multiple monitors: Create multi-monitor setups remotely
  • Persistent configuration: Virtual displays remain active across reboots
  • Low latency: Minimal overhead compared to physical displays
VDD works with all major remote desktop protocols including RDP, VNC, Parsec, TeamViewer, AnyDesk, and Chrome Remote Desktop.

Remote Desktop Protocol (RDP)

Windows Remote Desktop is the most common remote access method for Windows systems.

Basic RDP Setup

1

Install and configure VDD

Install Virtual Display Driver on the remote machine:
winget install --id=VirtualDrivers.Virtual-Display-Driver -e
Configure a virtual display matching your client resolution in C:\VirtualDisplayDriver\vdd_settings.xml:
<monitors>
  <count>1</count>
</monitors>
<resolutions>
  <resolution>
    <width>1920</width>
    <height>1080</height>
    <refresh_rate>60</refresh_rate>
  </resolution>
</resolutions>
2

Set virtual display as primary

Make the virtual display your primary monitor:Using GUI:
  1. Right-click desktop > Display settings
  2. Select the virtual display
  3. Scroll down and check Make this my main display
  4. Click Apply
Using PowerShell:
# Use the primary-VDD.ps1 script from Community Scripts
.\primary-VDD.ps1
Setting the virtual display as primary ensures RDP sessions use it by default.
3

Configure RDP settings

On the remote machine, enable Remote Desktop:
  1. Open Settings > System > Remote Desktop
  2. Enable Remote Desktop
  3. Note the PC name for connection
Optional: Configure advanced settings:
  • Allow connections only with Network Level Authentication
  • Set power settings to prevent sleep
  • Configure firewall rules for RDP (port 3389)
4

Connect from client

From your client machine:
  1. Open Remote Desktop Connection (mstsc.exe)
  2. Enter the remote PC name or IP address
  3. Click Show Options > Display tab
  4. Set resolution to match your virtual display (e.g., 1920×1080)
  5. Click Connect

Multi-Monitor RDP

Create multiple virtual displays for extended desktop scenarios.
1

Configure multiple virtual monitors

Edit vdd_settings.xml to create multiple displays:
<monitors>
  <count>2</count>
</monitors>
<resolutions>
  <resolution>
    <width>1920</width>
    <height>1080</height>
    <refresh_rate>60</refresh_rate>
  </resolution>
</resolutions>
2

Arrange displays

In Windows display settings:
  1. Identify both virtual displays
  2. Arrange them side-by-side or vertically
  3. Set one as primary
  4. Apply changes
3

Connect with multi-monitor RDP

Using Remote Desktop Connection:
mstsc /multimon
Or enable in RDP client:
  1. Open Remote Desktop Connection
  2. Show Options > Display
  3. Check Use all my monitors for the remote session
  4. Connect

Parsec for Low-Latency Remote Gaming

Parsec provides low-latency remote desktop ideal for gaming and creative work.

Parsec Configuration

1

Install Parsec on both machines

Download and install Parsec from parsec.app:
  • Install on the remote (host) machine
  • Install on your local (client) machine
  • Sign in with the same Parsec account on both
2

Configure virtual display for Parsec

On the host machine, create a virtual display with gaming-appropriate settings:
<monitors>
  <count>1</count>
</monitors>
<resolutions>
  <resolution>
    <width>1920</width>
    <height>1080</height>
    <refresh_rate>60</refresh_rate>
  </resolution>
  <resolution>
    <width>2560</width>
    <height>1440</height>
    <refresh_rate>60</refresh_rate>
  </resolution>
</resolutions>
Match the virtual display resolution to your client monitor for best quality.
3

Optimize Parsec settings

In Parsec host settings:
  • Resolution: Set to match your virtual display
  • Bandwidth limit: Increase for better quality (recommend 50 Mbps+)
  • Encoder: H.265 (HEVC) for better compression
  • Decoder: Hardware acceleration enabled
4

Connect and game

From the client:
  1. Open Parsec
  2. Click on your host computer
  3. Click Connect
  4. You’ll see the virtual display

Troubleshooting Parsec with VDD

Solution:
  • Ensure the virtual display is set as primary
  • Move a window to the virtual display to activate it
  • Restart the Parsec service on the host
  • Check GPU drivers are up to date
Solution:
  • Lower virtual display resolution
  • Reduce Parsec bandwidth limit to match your connection
  • Disable HDR on the virtual display
  • Close unnecessary applications
  • Check network latency and packet loss

VNC for Cross-Platform Access

VNC works across Windows, Linux, and macOS.

Setting Up VNC with VDD

1

Install VNC Server

Popular VNC servers for Windows:
  • TightVNC: Free and lightweight
  • RealVNC: Feature-rich with free tier
  • UltraVNC: Open-source with good performance
Download and install your preferred VNC server on the remote machine.
2

Configure virtual display

Create a virtual display with VNC-appropriate settings:
<monitors>
  <count>1</count>
</monitors>
<resolutions>
  <resolution>
    <width>1920</width>
    <height>1080</height>
    <refresh_rate>30</refresh_rate>
  </resolution>
</resolutions>
VNC typically doesn’t benefit from high refresh rates, so 30Hz is usually sufficient.
3

Configure VNC server

In your VNC server settings:
  • Set authentication password
  • Configure port (default 5900)
  • Enable encryption if supported
  • Set display to mirror or control
4

Connect with VNC viewer

From your client machine:
  1. Install a VNC viewer (TightVNC Viewer, RealVNC Viewer, etc.)
  2. Enter the host IP address and port
  3. Enter the password
  4. Connect to access the virtual display

Other Remote Desktop Solutions

TeamViewer

1

Install TeamViewer

Download and install TeamViewer on both host and client machines from teamviewer.com.
2

Configure virtual display

Standard VDD configuration works well with TeamViewer:
<resolution>
  <width>1920</width>
  <height>1080</height>
  <refresh_rate>60</refresh_rate>
</resolution>
3

Connect

  1. Note the TeamViewer ID from the host
  2. Enter the ID in the client TeamViewer
  3. Click Connect
  4. Enter the password

Chrome Remote Desktop

Google’s free cross-platform remote desktop solution.
1

Set up Chrome Remote Desktop

On the host machine:
  1. Open Chrome and navigate to remotedesktop.google.com/access
  2. Click Set up via SSH or download the Chrome Remote Desktop app
  3. Follow setup instructions
  4. Create a PIN
2

Configure virtual display

<monitors>
  <count>1</count>
</monitors>
<resolutions>
  <resolution>
    <width>1920</width>
    <height>1080</height>
    <refresh_rate>60</refresh_rate>
  </resolution>
</resolutions>
3

Access remotely

From any device:
  1. Navigate to remotedesktop.google.com/access
  2. Sign in with the same Google account
  3. Click on your computer
  4. Enter PIN

PowerShell Automation

Automate virtual display management for remote desktop scenarios using the included PowerShell scripts.

Quick Toggle for Remote Sessions

Use the toggle-VDD.ps1 script to enable/disable virtual displays:
# Navigate to Community Scripts folder
cd "C:\VirtualDisplayDriver\Community Scripts"

# Enable VDD and set to extended desktop
.\toggle-VDD.ps1

Set Virtual Display as Primary

Automatically set the virtual display as primary when starting a remote session:
# Use the primary-VDD.ps1 script
.\primary-VDD.ps1

Change Resolution Dynamically

Switch resolution on the fly for different remote clients:
# Change to 1920x1080
.\changeres-VDD.ps1 -width 1920 -height 1080

# Change to 2560x1440
.\changeres-VDD.ps1 -width 2560 -height 1440

Automated Startup Script

Create a startup script to ensure VDD is configured correctly when the system boots:
# startup-vdd-remote.ps1
# Place this in Windows Startup folder

# Enable VDD
pnputil /enable-device "ROOT\VDD\0000"

# Wait for display initialization
Start-Sleep -Seconds 5

# Set as primary display
.\primary-VDD.ps1

# Set desired resolution
.\changeres-VDD.ps1 -width 1920 -height 1080
Add this script to Windows Task Scheduler to run at system startup with highest privileges.

Best Practices for Remote Desktop

Set your virtual display resolution to match your client device:
  • Laptop (1080p): 1920×1080
  • Desktop (1440p): 2560×1440
  • 4K display: 3840×2160
  • Tablet: Custom resolution matching device
This prevents scaling artifacts and improves readability.
Remote desktop doesn’t benefit from high refresh rates:
  • RDP: 30-60Hz is sufficient
  • VNC: 30Hz works well
  • Parsec (gaming): 60Hz for responsiveness
  • TeamViewer: 60Hz recommended
Lower refresh rates reduce network bandwidth and CPU usage.
For remote desktop scenarios, disable features you don’t need:
<colour>
  <SDR10bit>false</SDR10bit>
  <HDRPlus>false</HDRPlus>
</colour>
<logging>
  <logging>false</logging>
  <debuglogging>false</debuglogging>
</logging>
This reduces overhead and improves remote desktop performance.
Always set the virtual display as primary for remote desktop:
  • Applications launch on the primary display by default
  • RDP sessions default to the primary display
  • Ensures consistent behavior across sessions
Prevent displays from sleeping:
  1. Open Settings > System > Power & sleep
  2. Set Screen to Never for both battery and plugged in
  3. Set Sleep to Never when plugged in
This ensures the virtual display remains active during remote sessions.

Troubleshooting Remote Desktop Issues

Solution:
  1. Ensure virtual display is enabled in Device Manager
  2. Set virtual display as primary in Windows settings
  3. Move a window to the virtual display to activate it
  4. Check that display isn’t sleeping due to power settings
  5. Restart the remote desktop service
Solution:
  • Verify the resolution in vdd_settings.xml matches your needs
  • Restart the machine after changing settings
  • Set Windows scaling to 100% on the virtual display
  • Configure the remote desktop client to match the virtual display resolution
  • Disable GPU scaling in graphics driver settings
Solution:
  1. Verify Remote Desktop is enabled in Windows settings
  2. Check firewall allows RDP connections (port 3389)
  3. Ensure the host is not sleeping
  4. Verify network connectivity
  5. Try connecting with IP address instead of hostname
  6. Check Windows Event Viewer for connection errors
Solution:
  • Reduce virtual display resolution
  • Lower refresh rate to 30Hz or 60Hz
  • Disable visual effects in Windows (Performance Options)
  • Close unnecessary applications
  • Check network bandwidth and latency
  • Disable HDR and 10-bit color
  • Use hardware acceleration in the remote desktop client
Solution:
  1. Ensure VDD driver is not disabled in Device Manager
  2. Check that the driver starts automatically:
    sc query VDD
    
  3. Re-enable if necessary:
    .\toggle-VDD.ps1
    
  4. Consider creating a startup script to configure displays

Advanced Scenarios

Remote Desktop for Multi-User Access

Configure different virtual displays for different users:
  1. Create multiple user accounts on the host
  2. Configure user-specific display settings
  3. Each user connects to their own session
  4. Virtual displays persist across user switches

Remote Development Environment

Optimize for remote coding and development:
  • Resolution: 2560×1440 or higher for code readability
  • Refresh rate: 60Hz for smooth scrolling
  • Multiple displays: One for IDE, one for browser/docs
  • Color accuracy: Disable HDR, use standard RGB

Remote Gaming with Friends

Use VDD with Parsec for co-op gaming:
  1. Host creates a virtual display matching their monitor
  2. Launch game on the virtual display
  3. Friends connect via Parsec
  4. Host can still use their physical display for other tasks

Headless Server Setup

Configure VDD for servers without physical displays

PowerShell Scripts

Automate display management with scripts

Resolution Configuration

Set custom resolutions for different remote clients

Driver Control App

Manage VDD with the GUI application

Build docs developers (and LLMs) love