在工作时,我连接到我们公司的门户网站以完成我的工作。我想把一些工作带回家,然后在那里完成。由于我无法从家里直接连接到公司的门户网站,我认为一个好主意是在工作电脑上启用 RDP。我这样做了,但门户网站仍然拒绝我的连接,因为 SSL 证书不被接受。不同之处在于,当我在工作时,Windows 会在机器的控制台上看到我,而当我在家时,Windows 会将我视为 TCP 会话。
那么,有没有办法可以欺骗 Windows 将我与工作计算机的 TCP 会话视为控制台会话?
我尝试了这篇文章中的第一个和第二个选项:
- 注册表:
HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\TSAppCompat
。
我的桌面上的正常会话中缺少[此键][1]。
如果可以,您可以尝试删除它。 - SESSIONNAME 环境变量值:控制台 / “RDP#” / (空)。您可以在执行(我的桌面值) 或(空)
后尝试从命令提示符 (cmd) 运行游戏。 要找出其当前值,请在更改任何内容之前输入。
SET SESSIONNAME=Console
SET SESSIONNAME=
SET SESSIONNAME
- 系统调用 [GetSystemMetrics(SM_REMOTESESSION)][3] 和 [GetVersionEx][2] ([OSVERSIONINFOEX.wSuiteMask][4]) 返回执行上下文。
除了为其编写系统挂钩外,您对此无能为力。
如果感兴趣,请参阅此 codeproject.com 文章:[API 挂钩揭秘][5]。
由 harrymc 撰写,可在此处找到:Windows:如何让程序认为它们没有在终端服务器会话中运行?
- 注册表项丢失,无需删除。
- 我尝试了“SET SESSIONNAME=Console”。当我使用“SET SESSIONNAME”进行询问时,会话名称会发生变化,但在任务管理器 -> 用户中显示 tcp-rdp,并且证书仍然被门户拒绝。
- 第三个选项对于我的编程技能来说太复杂了。
由于门户使用 SSL 证书,而我只能从 IE 访问它,因此我正在寻找一种方法,让 IE 认为我是从机器的控制台登录的,而不是远程连接的。希望有办法……
答案1
我不确定不在控制台会话中是否是问题所在,但您可能想尝试的一件事是 mstsc /admin(在 MSTSC 版本 6.1 及更高版本上)或 mstsc /console(在旧版本上)。这会告诉 RDP 连接到您计算机的控制台会话。如果您这样做,那么您就不需要欺骗系统认为您处于控制台会话中,您将处于控制台会话中。
答案2
我要说不要使用内置的 MSFT RDP,因为您无法轻松更改环境变量。例如,阻止您的是 SESSIONNAME 变量,对于本地登录,它要么设置为 CONSOLE,要么设置为 RDP-Tcp#1、RDP-Tcp#2(对于远程会话)。
从 powershell 查看它。
[environment]::GetEnvironmentVariable("SESSIONNAME")
或从命令提示符。
SET SESSIONNAME