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