窗口:XP ->当前:如何判断是在控制台还是RDP会话中?



我在各个实验室里收集了一堆杂乱的Windows平台。从XP到最新版本的一切。我有一个简单的C#/.NET应用程序,它在用户登录和注销时运行。我需要区分真正的控制台登录和RDP会话。我正在使用

System.Diagnostics.Process.GetCurrentProcess().SessionId

以获得sessionId,但我看不到任何内容显示"您在控制台上"或"您在RDP会话中"。有这样的事情吗?

根据我的需要,windows环境变量%sessionname%保存了我要查找的信息。在我的C#代码中,我可以说:

string sessionName = Environment.GetEnvironmentVariable("SESSIONNAME")
                     ?? "CONSOLE";

%sessionname%似乎包含字符串"console"或"rdp-(something)#(number)",例如"rdt-tcp#1234"。我不知道所有可能的值,但看起来它能满足我的需求。

您可以通过调用WTSGetActiveConsoleSessionId()函数来确定当前连接到物理控制台的会话ID(如果有的话)。

最新更新