配置在Windows 10/11上托管的RemoteApp(没有Windows Server)

如果您使用远程计算机在RDP会话中运行一个或两个应用程序,则可能会发现在在remoteapp模式。 RemoteApp技术是Windows Server上远程桌面服务角色的功能之一,它使您可以在远程RDS(RDP)服务器上运行应用程序,就好像它们在客户端上本地运行一样。这意味着远程Windows主机的整个桌面未交付到客户端的显示器;仅显示已发布的应用程序的窗口。

虽然仅在Windows Server上官方支持REMOTEAPPS,但您仍然可以在Windows的桌面版本(例如10或11)上配置并运行任何已安装的程序。

第一步是配置远程计算机(RDP服务器)运行remoteapp工作量:

  1. 在Windows上启用远程桌面协议
  2. 安装您要使用的应用程序
  3. 添加允许将应用程序使用的用户添加到本地Remote Desktop Users小组或通过远程桌面服务登录本地策略
  4. 允许任何本地程序作为remoteApp运行。打开本地组策略编辑(gpedit.msc),转到计算机配置 - >管理模板 - > Windows组件 - >远程桌面服务 - >远程桌面会话主机 - >连接。启用政策允许远程启动未列出的程序
    或者,创建一个注册表参数fallowunlistedremoteprogragons有价值1
    reg add "HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindows NTTerminal Services" /v fAllowUnlistedRemotePrograms /t REG_DWORD /d 1
  5. 重新启动远程计算机。

如果要限制远程用户可以作为remoteApp运行的本地应用程序列表,请在下面创建单独的注册表密钥HKLMSOFTWAREMicrosoftWindows NTCurrentVersionTerminal ServerTSAppAllowListApplications对于每个应用程序。
用于在工作组环境中发布Acrobat Reader作为RDS的示例文件:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionTerminal ServerTSAppAllowListApplicationsMyAdobeReaderApp]
"CommandLineSetting"=dword:00000000
"RequiredCommandLine"=""
"Name"="Adobe Reader"
"Path"="C:\Program Files\Adobe\Acrobat DC\Acrobat\Acrobat.exe"
"ShortPath"="C:\PROGRA~1\Adobe\Acrobat DC\Acrobat\Acrobat.exe"
"IconPath"="C:\PROGRA~1\Adobe\Acrobat DC\Acrobat\Acrobat.exe"
"IconIndex"=dword:00000000
"ShowInTSWA"=dword:00000001
"SecurityDescriptor"="

RDP客户端设置。

现在,在客户端设备上配置了RDP连接的快捷方式(您要在其中显示RemoteApp窗口)。

  1. 打开默认远程桌面连接客户端(mstsc.exe)。输入远程桌面计算机的DNS名称/IP和要登录的用户名。
  2. (可选)在RDP客户端的其余选项卡上配置所需的远程连接设置(本地设备重定向:驱动器,远程桌面剪贴板,打印机等)
  3. 将配置的远程连接设置保存到使用的文件*.RDP扩展(另存为)
  4. 在任何文本编辑器中打开此 *.RDP文件。将以下指令添加到文件末尾:
    remoteapplicationmode:i:1
    RemoteApplicationName:s:REMOTEAPP TITLE SHOULD BE DISPLAYED IN THE TASKBAR
    RemoteApplicationProgram:s:"PATH TO THE APP EXECUTABLE ON THE RDP HOST"
    DisableRemoteAppCheck:i:1
    Prompt for Credentials on Client:i:0
    Alternate Shell:s:rdpinit.exe
    
  5. 如果您需要使用其他命令行参数运行程序,请添加指令:
    RemoteApplicationCmdLine:s:COMMAND LINE PARAMETERS

    确保选项集未在现有的RDP连接参数中配置。这可能会导致冲突。

  6. 保存RDP连接文件。

例如,运行notepad.exe作为remoteApp,将以下行添加到RDP文件:

remoteapplicationmode:i:1
RemoteApplicationName:s:Remote_Notepad
RemoteApplicationProgram:s:"%windir%notepad.exe"
DisableRemoteAppCheck:i:1
Prompt for Credentials on Client:i:0
Alternate Shell:s:rdpinit.exe

密码提示应显示(您可以保存RDP凭据)。确认您信任RDP证书,而RemoteApp Windows将出现在桌面上。

要以remoteApp运行Microsoft Store应用程序,请在此格式中指定其名称:

了解更多:配置Mac的Windows键盘,反之亦然

start shell:AppsFolderMicrosoft.WindowsCalculator_8wekyb3d8bbwe!App

在此示例中,APPX名称是从PackageFamilyName值中复制的,我手动添加了!应用程序在最后。

Get-AppxPackage | Select-Object Name, PackageFamilyName | Where-Object { $_.Name -like "*calc*" }

如果您发现通常需要创建快捷方式来启动remoteapp,则可以使用免费remoteapp工具((https://github.com/kimmknight/remoteapptool)轻松为客户生成RDP或MSI安装程序文件。该工具还允许设置文件关联,更改remoteApp项目的图标和其他参数,并配置RDP主机设置(包括RDP会话超时)。

这种在运行Windows 10/11的台式设备上发布远程启动的方法不需要部署单独的RDS许可服务器和购买终端许可(RDS CALS)。但是,这样的计算机只能提供一个同时的remoteApp会话。您可以使用RDP包装器绕过Windows 10和11中并发RDP连接数量的限制。