如何查找已登录Windows用户的会话名称

本文关键字:用户 Windows 会话 登录 何查找 查找 | 更新日期: 2023-09-27 17:50:45

您可以在windows任务管理器的选项卡用户中看到,有5列:

User   ID   Status  Client Name  Session
Mike   1    Active               Console

我已经使用这个来获取会话id:

System.Diagnostics.Process.GetCurrentProcess().SessionId.ToString();

我想知道会话名称,看看它是控制台还是远程桌面等。

private string getsessionname()
{
  // function to get session name
}
if(getsessionname=="console")
{
  // do staff1
}
else
{
  // do staff2
}

谢谢。

如何查找已登录Windows用户的会话名称

而不是获得会话名称,然后测试某些值,您不只是寻找SystemInformation.TerminalServerSession吗?

获取一个值,该值指示调用进程是否与终端服务客户端会话相关联。

例如:

using System.Windows.Forms;
...
if(SystemInformation.TerminalServerSession)
{
  // do stuff where the user is using remote desktop
}
else
{
  // user is connected locally, e.g. the console
}

没有托管API。一种方法是通过P-Invoke使用本机API,请参阅检索登录会话信息。但是更简单的方法是使用WMI并查询Win32_LogonSession对象。