protected override void OnPowerChange(PowerChangeEvent e) { ITerminalServicesSession consoleSession = this[null]; string clientUser = consoleSession.GetClientUser(); if (Context.DebugLog) { var sb = new StringBuilder(); sb.Append($"PowerEvent: Status={e.Status} "); sb.Append("("); sb.Append($"Console: SessionId={consoleSession.SessionId}, "); if (clientUser.Length > 0) { sb.Append($"User={clientUser}, "); } sb.Append($"State={consoleSession.ConnectionState}"); if (consoleSession.ConnectionState == Cassia.ConnectionState.Active) { sb.Append($"|{(ConsoleLocked ? "Locked" : "Unlocked")}"); } sb.Append(")"); EventLog.WriteEntry(sb.ToString(), EventLogEntryType.Information, 90); } }
protected override void OnSessionChange(SessionChangeEvent e) { SessionChangeDescription desc = e.Description; ITerminalServicesSession session = wtsServer.GetSession(desc.SessionId); ITerminalServicesSession consoleSession = wtsServer.GetConsoleSession(); string clientUser = session.GetClientUser(); if (Context.DebugLog) { var sb = new StringBuilder(); sb.Append($"SessionChange: SessionId={desc.SessionId}, Reason={desc.Reason}"); sb.Append("("); if (clientUser.Length > 0) { sb.Append($"User={clientUser}, "); } sb.Append($"State={session.ConnectionState}"); sb.Append(")"); EventLog.WriteEntry(sb.ToString(), EventLogEntryType.Information, 91); } if (session.SessionId == consoleSession.SessionId) { if (desc.Reason == SessionChangeReason.SessionLock) { ConsoleLocked = true; } else if (desc.Reason == SessionChangeReason.SessionUnlock) { ConsoleLocked = false; } } if (desc.Reason == SessionChangeReason.SessionLogon || desc.Reason == SessionChangeReason.SessionUnlock && !session.IsRemoteConnected() || desc.Reason == SessionChangeReason.ConsoleConnect || desc.Reason == SessionChangeReason.RemoteConnect) { if (session.ConnectionState == ConnectionState.Active) { if (Context.EventLog) { EventLog.WriteEntry($"User login: {clientUser}", EventLogEntryType.Information, 1); } UserLogin?.Invoke(this, new UserLoginEventArgs { Session = session }); } } }