gpt4 book ai didi

windows - 如何从浏览器检测用户是否在远程桌面 session 中运行?

转载 作者:可可西里 更新时间:2023-11-01 12:47:46 25 4
gpt4 key购买 nike

如果用户在远程桌面 session 中运行,是否有办法在浏览器(例如 javascript)中检查?


如果用户在远程桌面(即终端服务)中运行他们的浏览器,我想禁用网站上的动画。

如果这是一个本地应用程序,而不是网站,我可以使用以下方法执行此检查:

//Native code
isRemoteSession = GetSystemMetrics( SM_REMOTESESSION );

//Managed Code:
isRemoteSession = System.Windows.Forms.SystemInformation.TerminalServerSession;

是否有类似的检查可以在浏览器中完成?

注意:为了讨论的目的,假设我们讨论的浏览器是 Internet Explorer 8。


更新一: 也许是 How can you get the terminal service client machine name from javascript? 中的内容

最佳答案

我的解决方案是使用 CSS @media 查询 color media feature 的最小值和最大值.根据实验,RDP 似乎每种颜色只有 5 位,而不是典型桌面的每种颜色的完整 8 位。

当然,这个解决方案并不完美,因为您会从不使用 RDP 的人那里得到很多误报,但恰好有低色深显示器。然而:

  • 如果您处于公司内部网等相对受控的环境中,您可能会更有信心“低色深”=“RDP”。
  • 网页上许多需要针对 RDP 进行调整的视觉元素正是因为颜色深度较低(渐变、淡出、动画等)而需要调整,因此它实际上测试颜色深度比 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&mdash;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>

screenshot showing test page with and without RDP

另一种方法是使用 javascript 检查 screen.colorDepth 变量的值。

关于windows - 如何从浏览器检测用户是否在远程桌面 session 中运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3417883/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com