Ian*_*oyd 8 windows terminal-services
如果用户在远程桌面会话中运行,是否有办法检查浏览器内部(例如javascript)?
如果用户在远程桌面(即终端服务)内运行浏览器,我想在网站上禁用动画.
如果这是一个本机应用程序,而不是一个网站,我可以使用以下方法执行此检查:
//Native code
isRemoteSession = GetSystemMetrics( SM_REMOTESESSION );
Run Code Online (Sandbox Code Playgroud)
要么
//Managed Code:
isRemoteSession = System.Windows.Forms.SystemInformation.TerminalServerSession;
Run Code Online (Sandbox Code Playgroud)
是否有类似的检查可以在浏览器内完成?
注意:为了本次讨论的目的,假设我们所讨论的浏览器是Internet Explorer 8.
更新一:也许在于如何从javascript获取终端服务客户端机器名?
Max*_*y-B 10
我的解决方案是使用CSS @media查询来获取color媒体功能的最小值和最大值.根据实验,RDP似乎每种颜色只有5位,而不是典型桌面每种颜色的完整8位.
当然,这个解决方案并不完美,因为你会从那些没有参加RDP的人身上得到很多误报,但恰好有很少的色彩深度显示.然而:
这是一个适用于我最近版本的Firefox和Chrome的示例.请参见下面的截图.
<!DOCTYPE html>
<html>
<head>
<title>Test RDP detection</title>
<style type="text/css">
@media all { li.color { display: none; } }
@media all and (min-color: 1) { li.color.color-depth-1 { display: block; } }
@media all and (min-color: 2) { li.color.color-depth-2 { display: block; } }
@media all and (min-color: 3) { li.color.color-depth-3 { display: block; } }
@media all and (min-color: 4) { li.color.color-depth-4 { display: block; } }
@media all and (min-color: 5) { li.color.color-depth-5 { display: block; } }
@media all and (min-color: 6) { li.color.color-depth-6 { display: block; } }
@media all and (min-color: 7) { li.color.color-depth-7 { display: block; } }
@media all and (min-color: 8) { li.color.color-depth-8 { display: block; } }
/* 5 bits per color seems to be the max for RDP */
@media all and (max-color: 5) {
.not-rdp { display: none; }
}
@media all and (min-color: 6) {
.rdp-only { display: none; }
}
</style>
</head>
<body>
<p>This page uses CSS <tt>@media</tt> queries to detect whether you
are viewing it over RDP—heuristically, by looking at the
color depth of your display.</p>
<ul>
<li class="color color-depth-1">Your display is not monochrome!</li>
<li class="color color-depth-2">Your display has at least 2 bits per color.</li>
<li class="color color-depth-3">Your display has at least 3 bits per color.</li>
<li class="color color-depth-4">Your display has at least 4 bits per color.</li>
<li class="color color-depth-5">Your display has at least 5 bits per color.</li>
<li class="color color-depth-6">Your display has at least 6 bits per color.</li>
<li class="color color-depth-7">Your display has at least 7 bits per color.</li>
<li class="color color-depth-8">Your display has at least 8 bits per color.</li>
</ul>
<p>You are <span class="not-rdp">not</span> using RDP.</p>
<p class="rdp-only">This is only visible over RDP.</p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

沿着这些方向的另一种方法是使用javascript来检查screen.colorDepth变量的值.
您可以使用以下媒体查询:
@media screen and (prefers-reduced-motion: reduce) { . . . }
此条件也适用于非 RDP 会话,但由于您的目的是禁用所有动画,因此这种类型的查询可能正是您正在寻找的。