Exemple #1
0
        private void CheckDiskUsage(ProcessorConfig config)
        {
            long length   = Directory.GetFiles(config.RootFolderPath, "*", SearchOption.AllDirectories).Sum(t => (new FileInfo(t).Length));
            var  lengthMB = (double)length / 1024 / 1024;

            if (lengthMB < config.MaxDiskSpaceMB)
            {
                return;
            }
            var dirNames = Directory.GetDirectories(config.RootFolderPath);

            Directory.Delete(dirNames.OrderBy(d => d).First(), true);
        }
Exemple #2
0
        public void Start(ProcessorConfig config)
        {
            _config = config;

            _debugFileName = Path.Combine(config.RootFolderPath, "debug.log");
            Debug("----------------------------------------------------");
            Debug(DateTime.Now.ToString());
            Debug($"Log folder: {config.RootFolderPath}");

            string userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;

            if (!Regex.IsMatch(userName, config.UsernamePattern))
            {
                Debug($"Username {userName} does not match pattern {config.UsernamePattern}");
                return;
            }

            _logFolder = Path.Combine(config.RootFolderPath, $"{DateTime.Now.ToString("yyyyMMdd")}");
            Directory.CreateDirectory(_logFolder);

            _logFileName = Path.Combine(_logFolder, "windows.log");
            if (!File.Exists(_logFileName))
            {
                File.WriteAllText(_logFileName, $@"Starting up...

");
            }

            _keysFileName = Path.Combine(_logFolder, "keys.log");
            if (!File.Exists(_keysFileName))
            {
                File.WriteAllText(_keysFileName, $@"Starting up...

");
            }

            Debug($"{Screen.AllScreens.Length} screen(s) detected");

            //SetupKeyboardHooks();

            _running = true;

            Debug("About to start infinite loop...");

            var i = 1;

            while (_running)
            {
                try
                {
                    CaptureScreenshot();
                    CaptureWindows();
                } catch (Exception ex)
                {
                    Debug($"Iteration: {i}");
                    Debug(ex.ToString());
                }
                Thread.Sleep(config.PauseSeconds * 1000);
                if (i % 10 == 0)
                {
                    CheckDiskUsage(config);
                }
                i++;
            }
        }