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

时间:2014-03-18 15:34:35

标签: c#

正如您在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
}

感谢。

2 个答案:

答案 0 :(得分:1)

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

  

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

E.g:

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
}

答案 1 :(得分:0)

没有托管API。一种方法是通过P-Invoke使用本机API,请参阅Retrieving Logon Session Information。但更简单的方法是使用WMI和query the Win32_LogonSession object