你如何在C#中使用LsaEnumerateLogonSessions?

时间:2011-04-14 21:25:02

标签: c# windows visual-studio-2008

在C#Windows窗体应用程序中,我正在尝试获取当前登录到工作站的用户列表(本地用户和域用户)。每次搜索都会让我提到“只使用LsaEnumerateLogonSessions”。

那么......你怎么实际使用它? MSDN页面非常稀疏,似乎没有提供任何线索。

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:0)

您应该使用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中尝试。

要回答您的问题,您需要将其声明为采用out inout long[]的P / Invoke方法。