我在各个实验室中收集了大量的Windows平台。从XP到最新的一切。我有一个简单的C#/ .NET应用程序,在用户登录和注销时运行。我需要区分真正的控制台登录和RDP会话。我正在使用
System.Diagnostics.Process.GetCurrentProcess().SessionId
获得sessionId
,但我没有看到任何说“你在控制台上”或“你在RDP会话中”的内容。有这样的事吗?
答案 0 :(得分:1)
根据我的需要,事实证明windows环境变量%sessionname%
包含我正在寻找的信息。在我的C#代码中,我可以说:
string sessionName = Environment.GetEnvironmentVariable("SESSIONNAME")
?? "CONSOLE";
%sessionname%
似乎包含字符串“console”或“rdp-(something)#(number)”,ex“rdt-tcp#1234”。我不知道所有可能的值,但看起来它可以满足我的需求。
答案 1 :(得分:0)
您可以通过调用WTSGetActiveConsoleSessionId()函数来确定当前连接到物理控制台的会话ID(如果有)。