为远程桌面 Web 访问添加多显示器选项

为远程桌面 Web 访问添加多显示器选项

我有一个远程桌面场的测试环境,其中有一个连接代理在远程桌面会话主机服务器之间平衡登录负载。所有服务器都基于 Server 2012 R2 构建。使用 rd web 访问,我们可以从任何地方访问这个场。

通过 Web 访问登录时,您可以选择屏幕分辨率或使用全屏。如果您有两个显示器,选择全屏时,它将始终使用您的两个显示器。

是否有人知道如何调整 RDWeb 页面,以便您可以选择是否使用两个显示器?

从 RDP 6.1 开始,此选项位于 GUI 中,因此我想有一种方法可以将其添加到 Web 访问页面。

答案1

默认情况下,用户无法选择在基于 Windows Server 2012(R2) 的 Microsoft RDS 场中使用一个或多个监视器。尽管有一个选项可以在 RD Web 访问页面生成的 RDP 文件内容中添加/替换选项。这可以通过修改 ShowOptimizeExperience 复选框来完成。

为了实现这一点,您需要执行以下步骤:

  • 更改 IIS 管理器中的应用程序设置

  • 修改 Site.xsl 文件

  • 修改 RDWAStrings.xml 文件

更改 IIS 管理器中的应用程序设置

  • 启动 IIS 管理器

  • 转至:默认网站 -> RDWeb -> 页面 -> 应用程序设置

  • 将选项 ShowOptimizeExperience 从 False 更改为 True

修改 RDWAStrings.xml 文件

转到以下路径:C:\Windows\Web\RDWeb\Pages\en-US
在记事本中打开文件 RDWAStrings.xml

替换文本:

<string id="OptimizeMyExperience">Optimize my experience for a LAN network when connecting to the computer or application.</string>

内容如下:

<string id="OptimizeMyExperience">Use multiple monitors.</string>

修改 Site.xsl 文件

转到以下路径:C:\Windows\Web\RDWeb\Pages
打开文件 Site.xsl

搜索文本strRdpFileContents

替换文本:

<xsl:if test="$showoptimizeexperience">
    if (<xsl:value-of select="$feedidprefix"/>Controls.chkShowOptimizeExperience.checked) {
        var objRegExp = new RegExp("connection type:i:([0-9]+)", "i");
        var iIndex = strRdpFileContents.search( objRegExp );
        <!-- Add 'connection type' if it does exist otherwise replace. -->
        if ( -1 == iIndex ) {
            if ( "\\n" != strRdpFileContents.charAt(strRdpFileContents.length-1) ) { 
            strRdpFileContents += "\\r\\n"; 
            }
            strRdpFileContents += "connection type:i:6\\r\\n";
        } else { 
            strRdpFileContents = strRdpFileContents.replace(objRegExp, "connection type:i:6");
            }
        }
</xsl:if>

内容如下:

<xsl:if test="$showoptimizeexperience">
    var pmxUseMultimon = 0;
    if (<xsl:value-of select="$feedidprefix"/>Controls.chkShowOptimizeExperience.checked) {
        pmxUseMultimon = 1;
    }
    var objRegExp = new RegExp("use%20multimon%3Ai%3A([0-9])", "i");
    var iIndex = strRdpFileContents.search( objRegExp );
    <!-- Add 'use multimon' if it does exist otherwise replace. -->
    if ( -1 == iIndex ) {
        if ( "\\n" != strRdpFileContents.charAt(strRdpFileContents.length-1) ) { 
        strRdpFileContents += "\\r\\n"; 
        }
        strRdpFileContents += "use%20multimon%3Ai%3A"+pmxUseMultimon+"\\r\\n";
    } else { 
        strRdpFileContents = strRdpFileContents.replace(objRegExp, "use%20multimon%3Ai%3A"+pmxUseMultimon);
    }
</xsl:if>

笔记:

从原文中可以看出,微软正在搜索正则表达式“connection type:i:”。

在生成的rdp文件内容中,文本是“连接类型%3Ai%3A”。

这意味着微软的“优化我的体验”选项永远不会起作用。

当您现在转到 RDS 网页时,您将看到一个复选框,其中带有“使用多个显示器”文本

将远程应用程序配置“重定向监视器的最大数量”设置为大于 1 的数字非常重要。除非此解决方案不起作用。

相关内容