我如何查询使用C#通过API给定会话ID的用户名?
问题描述:
我犯了一个服务在“LocalSystemLevel”在会话0中运行的跟踪用户会话的事件,如打开,关闭,锁定,解锁等.... 当该服务发现一个SessionChange事件,返回SessionChangeDescription结构给我触发事件的会话ID,但我无法找到如何检索相应的用户名。谁能帮忙? 谢谢 - JL我如何查询使用C#通过API给定会话ID的用户名?
答
您可以轻松地分析的qwinsta.exe
var proc = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = "qwinsta.exe",
Arguments = null,
UseShellExecute = false,
RedirectStandardOutput = true,
CreateNoWindow = true
}
};
proc.Start();
while (!proc.StandardOutput.EndOfStream)
{
string line = proc.StandardOutput.ReadLine();
Console.WriteLine(line);
}
}
+0
你可以用'WMI',这种解决方案并不虽然使用'WMI'。 – Ofiris
问题的输出是如何得到会话USERNAME给出一个会话ID? – Ofiris
准确。它很容易,如果你使用的当前会话(其中查询进程正在运行)的会话ID,但我没有找到如何与另一个会话ID做到这一点; ... – user2569154
你有没有尝试运行'qwinsta.exe '并阅读其输出? – Ofiris