Как вы используете LsaEnumerateLogonSessions в C #? - PullRequest
0 голосов
/ 15 апреля 2011

В приложении C # Windows Forms я пытаюсь получить список пользователей, которые в данный момент вошли на рабочую станцию ​​(как локальные, так и доменные пользователи). Каждый поиск об этом приводил меня к темам, в которых упоминалось «просто используйте LsaEnumerateLogonSessions ».

Итак ... как вы на самом деле используете это? Страница MSDN очень редкая и, похоже, не предлагает никаких подсказок.

Ответы [ 2 ]

2 голосов
/ 09 июля 2013

В этой статье показано, как использовать LsaEnumerateLogonSessons:
http://www.codeproject.com/Articles/18179/Using-the-Local-Security-Authority-to-Enumerate-Us

0 голосов
/ 15 апреля 2011

Вы должны использовать 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[].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...