我如何查询使用C#通过API给定会话ID的用户名?

问题描述:

我犯了一个服务在“LocalSystemLevel”在会话0中运行的跟踪用户会话的事件,如打开,关闭,锁定,解锁等.... 当该服务发现一个SessionChange事件,返回SessionChangeDescription结构给我触发事件的会话ID,但我无法找到如何检索相应的用户名。谁能帮忙? 谢谢 - JL我如何查询使用C#通过API给定会话ID的用户名?

+0

问题的输出是如何得到会话USERNAME给出一个会话ID? – Ofiris

+0

准确。它很容易,如果你使用的当前会话(其中查询进程正在运行)的会话ID,但我没有找到如何与另一个会话ID做到这一点; ... – user2569154

+0

你有没有尝试运行'qwinsta.exe '并阅读其输出? – Ofiris

您可以轻松地分析的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