Copy and paste over Remote Desktop

    Remote Desktop transfers clipboard data between the local computer and the remote session. If formatted text arrives as plain text or does not paste, the HTML clipboard format may not have reached the session. Compare local and remote clipboard formats, then check redirection settings and policy.

    Diagram of the Remote Desktop clipboard path: a copy from Word puts both CF_HTML and CF_UNICODETEXT on the local clipboard, rdpclip.exe forwards only the plain text across the session boundary, and the HTML editor in the remote session therefore receives unformatted text.
    Diagram of the Remote Desktop clipboard path: a copy from Word puts both CF_HTML and CF_UNICODETEXT on the local clipboard, rdpclip.exe forwards only the plain text across the session boundary, and the HTML editor in the remote session therefore receives unformatted text.

    Check whether the HTML clipboard format reaches the remote session. If it does not, review redirection settings and session policy. If it does, inspect the editor paste options and the Pasting event rather than attributing every failure to RDP.

    Root cause: the RDP clipboard proxy, not the editor

    Remote Desktop redirects clipboard formats through its clipboard channel. The source application, RDP client and policy determine which formats arrive. Compare local and remote HTML-format availability, and consult Microsoft's clipboard-redirection guidance for session configuration.

    Confirm this independently of the editor by pasting the same formatted content into a blank WordPad or Word document inside the same RDP session; the formatting drops there too. This is a Remote Desktop clipboard limitation that affects every Windows application, WPF, WinForms, native, that reads the standard clipboard. It is not specific to WpfHtmlEditor, and switching to the WinForms edition of the control would not change it either; both editions host the same MSHTML rendering engine and both sit on top of the same OS clipboard mechanism.

    Fix 1: enable clipboard redirection in the RDP client

    In mstsc.exe, open Show Options > Local Resources > Local devices and resources and confirm Clipboard is checked. Disconnect and reconnect, rdpclip.exe launches on connect, so an already-open session may need to be restarted. Roll this out through Group Policy for a team of any size, rather than relying on each user to set it individually.

    Fix 2: restart rdpclip mid-session; fix 3: plain-text fallback

    Some users report that formatting pastes correctly earlier in the day and stops working later in the same session, the clipboard channel can wedge over time. Kill rdpclip.exe in Task Manager on the remote machine and relaunch it (Start > Run > rdpclip). The clipboard channel re-negotiates without dropping the session. A small "Repair clipboard" command inside your own application, wired to the same restart, saves a non-technical user a trip to Task Manager.

    For high-volume workflows where the user will reformat content anyway, train around copy-as-plain-text on the source side. Any HTML that does survive the channel still flows through the editor's built-in Word-paste cleanup (Options.AutoDetectWordPaste), so a formatted paste that lands gets sanitized the same way it would outside of RDP.

    Detecting a failed paste with the Pasting event

    The Pasting event fires before the incoming HTML is inserted, and its PastingHtmlEventArgs.PastingHtml property lets you see exactly what arrived. An empty payload that is not an MS Word paste is a strong signal the clipboard channel dropped the content, which is a better moment to nudge the user than letting them discover a blank paste on their own:

    // Wire this to the editor's Pasting event (XAML: Pasting="NoteEditor_Pasting").
    private void NoteEditor_Pasting(object sender, PastingHtmlEventArgs e)
    {
        if (string.IsNullOrEmpty(e.PastingHtml) && !e.IsPastingFromMsWord)
        {
            // Nothing arrived on the clipboard: likely a broken RDP redirection.
            MessageBox.Show("Nothing was found on the clipboard. If you are working over " +
                "Remote Desktop, ask your administrator to restart rdpclip.exe on the remote machine.");
        }
    }
    ' Wire this to the editor's Pasting event (XAML: Pasting="NoteEditor_Pasting").
    Private Sub NoteEditor_Pasting(sender As Object, e As PastingHtmlEventArgs)
        If String.IsNullOrEmpty(e.PastingHtml) AndAlso Not e.IsPastingFromMsWord Then
            ' Nothing arrived on the clipboard: likely a broken RDP redirection.
            MessageBox.Show("Nothing was found on the clipboard. If you are working over " &
                "Remote Desktop, ask your administrator to restart rdpclip.exe on the remote machine.")
        End If
    End Sub

    What the editor cannot do

    The editor sits on top of the standard WPF clipboard. It has no privileged path into rdpclip.exe, no way to force a disabled clipboard channel to work, and no reliable way to detect with certainty that it is running inside an RDP session with broken redirection. If only plain text arrives on the clipboard, that is exactly what gets pasted; if nothing arrives, the paste is silently empty. The Pasting handler above can flag the empty case, but it cannot make a missing clipboard format arrive.

    For applications that run primarily inside RDP or Citrix, the cleanest approach is to make sure clipboard redirection is configured on the connection broker at deployment time, rather than asking each end user to tick a box. That is a Group Policy or connection-broker setting, not an editor code change.

    Ask your AI to do this

    Connect the SpiceLogic MCP server, then give your coding assistant this prompt.

    I use the SpiceLogic WPF HTML Editor. Help me diagnose missing clipboard formats over Remote Desktop. Check clipboard redirection and session policy before changing the editor. Confirm the exact API names, types and defaults with the SpiceLogic MCP documentation, then show the changes for my project.

    Last updated on Oct 10, 2026

    Put this into practice.

    Clone the C# and VB.NET sample projects from GitHub. Start with Quickstart, then explore the feature samples.

    Prefer a guided look? Book a free live demo with our engineers - live on Zoom or Teams, never a chatbot.