1) Cassia должна предоставить вам список зарегистрированных пользователей, включая RDC.
foreach (ITerminalServicesSession sess in new TerminalServicesManager().GetSessions())
{
// sess.SessionId
// sess.UserName
}
2) WMI (SO answer )
Select * from Win32_LogonSession
3) PInvoke to WTSEnumerateSessions
4) Перечислить все экземпляры "explorer.exe" и получить владельца с помощью PInvoke ( OpenProcessHandle ).
Process[] processes = Process.GetProcessesByName("explorer");
Это немного глупо. WMI также может использоваться для этого.
Возможно, было бы неплохо установить winmgmt в качестве зависимости для вашей службы, если вы решили использовать решение, которое используетWMI.