public static bool AreAllUsersLoggedOut() { // Open local server IntPtr server = Wtsapi32.WtsOpenServer(Environment.MachineName); try { // Get user sessions and logout each user return GetSessionIDs(server).All(id => WellKnownSessionIds.Contains(id)); } finally { Wtsapi32.WtsCloseServer(server); } }
public static void LogoutAllUsers() { // Open local server IntPtr server = Wtsapi32.WtsOpenServer(Environment.MachineName); try { // Get user sessions and logout each user foreach (int sessionId in GetSessionIDs(server).Where(id => !WellKnownSessionIds.Contains(id))) { // Get Username string? username = GetUsername(server, sessionId); if (string.IsNullOrWhiteSpace(username)) continue; Wtsapi32.WtsLogoffSession(server, sessionId, false); } } finally { Wtsapi32.WtsCloseServer(server); } }