RDP 客户端能否启动远程应用程序,然后只显示该应用程序(而不是桌面)?应用程序将在客户端中全屏显示,如果应用程序关闭,会话将结束。
“备用外壳”doesn't seem to work 在 Windows 的最新版本中不再存在,RemoteApp
是要走的路。
remoteapplicationmode:i:1
remoteapplicationname:s:Purpose of the app shown to user...
remoteapplicationprogram:s:C:\...\some.exe
remoteapplicationcmdline:s:
要使其在例如 Windows 10 Professional 下工作,需要enable some policy:
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services]
"fAllowUnlistedRemotePrograms"=dword:00000001
使用 RDP 连接文件,您可以将备用外壳设置为您的应用程序;文件语法就像
alternate shell:s:c:\winnt\system32\notepad.exe
然后将其作为命令行参数传递给 mstsc.exe;这类似于 chrissr 的解决方案,但不会影响您启动的每个 RDP 会话。 A fuller summary of settings here。
这是很容易实现的。
我们需要允许任何未列出的程序从 RDP 开始。 1.1 将下面的脚本保存在桌面上,扩展名必须以.reg 结尾。
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList] "fDisabledAllowList"=dword:00000001
1.2 右键点击文件,点击Merge,Yes,Ok。
修改我们的 .rdp 文件。 2.1 在我们文件的最后,添加如下代码:
remoteapplicationmode:i:1 remoteapplicationname:s:This will be the optional description of the app remoteapplicationprogram:s:Relative or absolute path to the app (Example: taskmgr or C:\Windows\system32\taskmgr.exe) remoteapplicationcmdline:s:Here you'd put any optional application parameters
remoteapplicationmode:i:1 remoteapplicationname:s: remoteapplicationprogram:s:mspaint remoteapplicationcmdline:s:
2.2 输入您的用户名和密码并连接。
https://i.imgur.com/zEZqL6Q.png
remoteapplicationprogram:s
键来指定驻留在 remote 计算机上的应用程序。要在远程计算机上运行本地 主机端 应用程序,请改用 remoteapplicationfile:s
键。
这称为“无缝”模式。 rdesktop
,Unix 的 RDP 客户端,能够做到这一点。从手册页:
-A 启用无缝 RDP。在这种模式下,rdesktop 为服务器端的每个窗口创建一个 X11 窗口。此模式需要SeamlessRDP 服务器端组件,该组件可从 http://www.cendio.com/seamlessrdp/ 获得。使用此选项时,您应该指定一个启动 shell,它通过无缝 RDP 启动所需的应用程序。
有关详细信息,请参阅提到的 Cendio website。
是的,您可以将默认 shell 从 Explorer.exe 更改为特定应用程序。
在 Regedit 中,导航到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon。当前的 shell 应该是 Explorer.exe。将其更改为 YourApp.exe。这将更改所有登录机器的用户的 shell。如果您只想为特定用户更改它,请转至 HKEY_CURRENT_USER 中的相同键。
这称为远程应用程序。要使用它,您需要安装终端服务,现在称为远程桌面服务。
我认为思杰就是这样做的。虽然我不确定具体细节,因为我只使用过几次。我认为我使用的那个叫做 XenApp 但我不确定这是否是你所追求的。
此 CodeProject 文章中显示了另一种方法:
http://www.codeproject.com/KB/IP/tswindowclipper.aspx
基本思想是创建一个虚拟通道,发送您要显示的应用程序的窗口位置,然后只在客户端上渲染窗口的那一部分。
Google for RemoteApp 并且只有 Windows Server 2016+ 提供。还有一个名为“RemoteApp Tool”的黑客工具可在 Windows Pro 版本中启用 RemoteApp 支持/
至少在 2008R2 上,如果帐户仅用于 RDP 而不是本地登录,那么您可以在每个帐户的基础上进行设置。这应该适用于瘦客户端。如果这些帐户也在本地桌面上使用,那么这也会影响这些登录。
在 ADUsers&Computers 中,打开帐户的属性并转到 Environment 选项卡。在该选项卡上,选中“登录时启动以下程序”并指定该程序的路径和可执行文件。
RDP 本身不会这样做。
正如其他答案所说 - 您需要编写一些脚本并进行策略更改,以使 RDP 登录难以运行除预期应用程序之外的任何内容。
但是,截至 2008 年,Microsoft 已经通过终端服务发布了应用程序虚拟化技术,可以让您无缝地执行此操作。
不定期副业成功案例分享
.rdp
文件本身和服务器上的注册表中进行上述更改(从第一部分开始)。remoteapplicationfile:s
和remoteapplicationprogram:s
。*file
键指定本地(主机) 计算机上的可执行文件的完整路径,而*program
键指定远程 计算机上的可执行文件。