您如何在C#中使用LsaEnumerateLogonSessions?

| 在C#Windows Forms应用程序中,我试图获取当前登录到工作站的用户(本地和域用户)的列表。关于此的每次搜索都导致我提到“仅使用LsaEnumerateLogonSessions”。 那么...您实际上如何使用它? MSDN页面非常稀疏,似乎没有提供任何线索。     
已邀请:
您应该使用开放源码包装器Cassia。
ITerminalServicesManager manager = new TerminalServicesManager();
using (ITerminalServer server = manager.GetRemoteServer(\"your-server-name\"))
{
    server.Open();
    foreach (ITerminalServicesSession session in server.GetSessions())
    {
        Console.WriteLine(\"Session ID: \" + session.SessionId);
        Console.WriteLine(\"User: \" + session.UserAccount);
        Console.WriteLine(\"State: \" + session.ConnectionState);
        Console.WriteLine(\"Logon Time: \" + session.LoginTime);
    }
}
我不确定这将如何处理域用户;在LINQPad中尝试。 要回答您的问题,您需要将其声明为P / Invoke方法,该方法需要
out in
out long[]
。     
本文介绍了如何使用LsaEnumerateLogonSessons: http://www.codeproject.com/Articles/18179/Using-the-Local-Security-Authority-to-Enumerate-Us     

要回复问题请先登录注册