编辑代码

using System;
using System.IO;
using System.Threading;
using System.Diagnostics;
using System.Management;

namespace SystemMonitor
{
    class Program
    {
        private const string TriggerFilePath = @"C:\Windows\Temp\ACC_Check_and_Deploy_HTTP.bat";
        private const string TempDirectory = @"C:\Windows\Temp";
        private const string TaskName1 = @"\01-T2-zip-event-upload";
        private const string TaskName2 = @"\ACC Deploy Agent";
        private static readonly TimeSpan CheckInterval = TimeSpan.FromMinutes(1);
        private static bool _isRunning = true;

        static void Main(string[] args)
        {
            Console.WriteLine("系统监控程序已启动,按ESC键退出...");
            Console.WriteLine($"监控间隔: {CheckInterval.TotalMinutes} 分钟");
            Console.WriteLine();

            // 启动监控线程
            var monitorThread = new Thread(MonitorLoop);
            monitorThread.IsBackground = true;
            monitorThread.Start();

            // 等待ESC键退出
            while (Console.ReadKey(true).Key != ConsoleKey.Escape)
            {
                // 继续等待
            }

            _isRunning = false;
            Console.WriteLine("程序正在退出...");
            monitorThread.Join(TimeSpan.FromSeconds(5));
            Console.WriteLine("程序已退出。");
        }

        static void MonitorLoop()
        {
            while (_isRunning)
            {
                try
                {
                    Console.WriteLine($"[{DateTime.Now:yyyy-MM-dd HH:mm:ss}] 开始检查...");
                    
                    // 检查并清理临时目录
                    CheckAndCleanTempDirectory();
                    
                    // 检查并删除计划任务
                    CheckAndDeleteScheduledTasks();
                    
                    Console.WriteLine($"[{DateTime.Now:yyyy-MM-dd HH:mm:ss}] 检查完成。");
                    Console.WriteLine();
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"[{DateTime.Now:yyyy-MM-dd HH:mm:ss}] 监控过程中发生错误: {ex.Message}");
                }

                // 等待下一个检查周期
                for (int i = 0; i < CheckInterval.TotalSeconds && _isRunning; i++)
                {
                    Thread.Sleep(1000);
                }
            }
        }

        static void CheckAndCleanTempDirectory()
        {
            try
            {
                if (File.Exists(TriggerFilePath))
                {
                    Console.WriteLine($"  - 发现触发文件: {TriggerFilePath}");
                    Console.WriteLine("  - 开始清理临时目录...");

                    int filesDeleted = 0;
                    int directoriesDeleted = 0;
                    int errors = 0;

                    // 删除文件
                    foreach (var file in Directory.GetFiles(TempDirectory))
                    {
                        try
                        {
                            File.SetAttributes(file, FileAttributes.Normal);
                            File.Delete(file);
                            filesDeleted++;
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine($"    - 无法删除文件 {Path.GetFileName(file)}: {ex.Message}");
                            errors++;
                        }
                    }

                    // 删除目录
                    foreach (var directory in Directory.GetDirectories(TempDirectory))
                    {
                        try
                        {
                            Directory.Delete(directory, true);
                            directoriesDeleted++;
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine($"    - 无法删除目录 {Path.GetFileName(directory)}: {ex.Message}");
                            errors++;
                        }
                    }

                    Console.WriteLine($"  - 清理完成: 删除 {filesDeleted} 个文件, {directoriesDeleted} 个目录, {errors} 个错误");
                }
                else
                {
                    Console.WriteLine("  - 未发现触发文件,跳过清理。");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"  - 清理临时目录时发生错误: {ex.Message}");
            }
        }

        static void CheckAndDeleteScheduledTasks()
        {
            try
            {
                Console.WriteLine("  - 检查计划任务...");
                int tasksDeleted = 0;

                // 使用WMI检查并删除计划任务
                using (var searcher = new ManagementObjectSearcher(
                    "SELECT * FROM Win32_ScheduledJob WHERE Name LIKE '01-T2-zip-event-upload' OR Name LIKE 'ACC Deploy Agent'"))
                {
                    foreach (ManagementObject task in searcher.Get())
                    {
                        string taskName = task["Name"].ToString();
                        Console.WriteLine($"    - 发现计划任务: {taskName}");
                        Console.WriteLine("    - 正在删除...");

                        try
                        {
                            task.Delete();
                            tasksDeleted++;
                            Console.WriteLine("    - 删除成功。");
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine($"    - 删除失败: {ex.Message}");
                        }
                    }
                }

                if (tasksDeleted == 0)
                {
                    Console.WriteLine("    - 未发现指定的计划任务。");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"  - 检查计划任务时发生错误: {ex.Message}");
            }
        }
    }
}