如何在c#中使用LsaEnumerateLogonSessions ?
本文关键字:LsaEnumerateLogonSessions | 更新日期: 2023-09-27 17:50:25
在c# Windows窗体应用程序中,我试图获得当前登录到工作站(本地和域用户)的用户列表。关于这一点的每次搜索都导致我提到"只使用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);
}
}
我不确定这将如何处理域用户;
要回答您的问题,您需要将其声明为一个p/Invoke方法,该方法接受一个out in
和一个out long[]
。