背景信息
我最近在服务器上安装了 Microsoft Office 2013,以便使用 RemoteApp 将其部署到我家的所有计算机。安装后,当我尝试运行程序时,它显示一个错误,提示要在安装了终端服务的 PC 上运行 Office,您必须使用批量许可版本的 Office。然后,我卸载了所有远程桌面服务器角色,而是通过禁用允许列表手动部署它们,无论是在本地运行还是作为 RemoteApps 部署,它都可以正常工作。
什么是允许列表?
在常规的 RemoteApp 部署中,有一个允许作为 RemoteApp 运行的应用程序列表,配置该列表的唯一方法是使用终端服务服务器角色。但是,可以进入 Windows 注册表并禁用该列表,这样任何人都可以通过知道路径来以 RemoteApp 的形式访问服务器上的任何应用程序,而无需安装终端服务服务器角色。
这让我对某事感到好奇......
我的问题
应用程序是否能以这种方式检测到它作为 RemoteApp 运行(禁用允许列表)并且如果是则拒绝启动,并且仅当它在本地服务器桌面上运行时才启动?
答案1
应用程序如何检测到它正在作为 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 监视桌面上所有窗口的状态。...
(引自科技网)