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();
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;
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}");
}
}
}
}