应用程序能否检测到它正在作为 RemoteApp 运行?

gpa*_*ani 6 windows remote-desktop remoteapp

背景资料

我最近在我的服务器上安装了 Microsoft Office 2013,以使用 RemoteApp 部署到我所有的家庭计算机。安装后,当我尝试运行这些程序时,出现错误提示,为了在安装了终端服务的 PC 上运行 Office,您必须使用批量许可版本的 Office。然后,我卸载了所有远程桌面服务器角色,而是通过禁用允许列表手动部署它们,无论是在本地运行还是部署为 RemoteApps,它都运行良好。

什么是允许列表?

在正常的 RemoteApp 部署中,有一个允许作为 RemoteApp 运行的应用程序列表,配置它的唯一方法是使用终端服务服务器角色。但是,可以进入 Windows 注册表并禁用该列表,以便任何人都可以通过知道其路径作为 RemoteApp 访问服务器上的任何应用程序,而无需安装终端服务服务器角色。

这让我对一些事情感到好奇......

我的问题

应用程序是否可以通过这种方式检测到它作为 RemoteApp 运行(禁用了允许列表)并拒绝启动,并且仅当它在本地服务器桌面上运行时才启动?

mar*_*gle 3

应用程序如何检测它是否作为 RemoteApp 运行?

RemoteApp 会话通过在终端服务器上启动RDPINIT.EXE。因此应用程序可以检查 RDPINIT.EXE 是否是父进程

细节:

RDPINIT.EXE 实例在每个用户 RemoteApp 会话的终端服务器上运行。RDPINIT.EXE 由 USERINIT.EXE 加载,作为 USERINIT.EXE 的 RemoteApp 特定实现。RDPINIT.EXE 充当看门狗来启动 RDPSHELL.EXE 并监视进程的启动和关闭。RDPSHELL.EXE 是用来代替 EXPLORER.EXE 来提供 RemoteApp 功能的 shell。RDPINIT.EXE 监视 RDPSHELL.EXE 的进程生命周期,并在异常终止时重新启动它。RDPSHELL.EXE 将一组 Windows 事件挂钩加载到会话中的每个用户桌面上。这些事件挂钩允许 RDPSHELL.EXE 监视桌面上所有窗口的状态。...

(引自Technet