Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# windows:XP->;当前:如何判断是在控制台中还是在RDP会话中?_C#_Windows_Session - Fatal编程技术网

C# windows:XP->;当前:如何判断是在控制台中还是在RDP会话中?

C# windows:XP->;当前:如何判断是在控制台中还是在RDP会话中?,c#,windows,session,C#,Windows,Session,我在不同的实验室里收集了大量的Windows平台。从XP到最新的一切。我有一个简单的C#/.NET应用程序,在用户登录和注销时运行。我需要区分真正的控制台登录和RDP会话。我正在使用 System.Diagnostics.Process.GetCurrentProcess().SessionId 获取sessionId,但我没有看到任何显示“您在控制台上”或“您在RDP会话中”的内容。有这样的事情吗?您可以通过调用函数来确定当前连接到物理控制台的会话ID(如果有)。根据我的需要,windows

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

System.Diagnostics.Process.GetCurrentProcess().SessionId

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

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

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

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

%sessionname%
似乎包含字符串“console”或“rdp-(某物)#(数字)”,例如“rdt tcp#1234”。我不知道可能值的全部范围,但它似乎可以满足我的需要。

看起来您必须将会话id与注册表中的值进行比较,以确保。。。谢谢,看起来“受支持的最低客户端”级别是Windows Vista。我希望有一个可以追溯到XP的解决方案。我可能需要拼凑一些东西,但我希望不会。Vista被显示为所有API函数的最低支持客户端(好吧,取决于文档更新的最近程度),因为它是Windows的最低支持版本。要确定某个函数是否在XP中,您必须尝试并查看它,或者使用像Wayback机器这样的存档服务。在本例中,a显示这个特定的函数确实在XP中可用。结果表明它可能比所有这些都简单。我不是windows用户,直到昨天下午才意识到有一个名为
%sessionname%
的环境变量设置为“console”或“rdp-#”,例如“rdp tcp#1234”。我认为这足以满足我的需要,而且很容易获得。干杯+1,我不知道。:-)对其他读卡器的一个警告:这确定用户首次登录时当前登录会话是否在本地物理控制台上,而不是用户当前是否在本地物理控制台上。对于登录脚本,这可能正是您想要的,但可能不适合用于其他目的。