在C#Windows窗体应用程序中,我正在尝试获取当前登录到工作站的用户列表(本地用户和域用户)。每次搜索都会让我提到“只使用LsaEnumerateLogonSessions”。
那么......你怎么实际使用它? MSDN页面非常稀疏,似乎没有提供任何线索。
答案 0 :(得分:2)
本文介绍如何使用LsaEnumerateLogonSessons:
http://www.codeproject.com/Articles/18179/Using-the-Local-Security-Authority-to-Enumerate-Us
答案 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 in
和out long[]
的P / Invoke方法。