Ejemplo n.º 1
0
        private void ScanWinSessionsToRecordOrEnd(object state)
        {
            int[] winSessions  = WTSEngine.GetActiveSessions();
            var   rcdProcesses = GetRcordingProcesses();

            // if not recording, record it.
            foreach (int sid in winSessions)
            {
                if (Array.Find(rcdProcesses, p => p.SessionId == sid) == null)
                {
                    string user = WTSEngine.GetDomainUserBySessionId(sid);
                    if (UserPolicy.IsUserRecording(user))
                    {
                        TraceLogger.Instance.WriteLineInfo("Start recording by configuration. user: "******"Stop recording by configuration. user: "******"Kill recording agent because double process. sessionId: " + proc.SessionId);
                    try { proc.Kill(); }
                    catch (Exception) { }
                }
                else
                {
                    sessions.Add(proc.SessionId);
                }
            }

            // dispose
            Array.ForEach(rcdProcesses, p => p.Dispose());
        }