正如您在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
}
感谢。
答案 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。