// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 // // 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 // // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! namespace Admin.NET.Core; /// /// 硬件信息管理器 /// public static class HardwareInfoManager { /// /// 获取完整的系统硬件信息 /// /// /// 推荐使用,默认有缓存 /// /// 系统硬件信息 public static SystemHardwareInfo GetSystemHardwareInfo() { return new SystemHardwareInfo { CpuInfo = CpuHelper.CpuInfos, RamInfo = RamHelper.RamInfos, DiskInfos = DiskHelper.DiskInfos, NetworkInfos = NetworkHelper.NetworkInfos, GpuInfos = GpuHelper.GpuInfos, BoardInfo = BoardHelper.BoardInfos }; } /// /// 获取系统硬件摘要信息 /// /// 系统硬件摘要 public static SystemHardwareSummary GetSystemHardwareSummary() { try { var cpuInfo = CpuHelper.CpuInfos; var ramInfo = RamHelper.RamInfos; var diskInfos = DiskHelper.DiskInfos; var networkInfos = NetworkHelper.NetworkInfos; var gpuInfos = GpuHelper.GpuInfos; return new SystemHardwareSummary { CpuName = cpuInfo.ProcessorName, CpuCores = $"{cpuInfo.PhysicalCoreCount}C/{cpuInfo.LogicalCoreCount}T", CpuUsage = $"{cpuInfo.UsagePercentage:F1}%", TotalMemory = ramInfo.TotalBytes.FormatFileSizeToString(), MemoryUsage = $"{ramInfo.UsagePercentage:F1}%", TotalDiskSpace = diskInfos.Sum(d => d.TotalSpace).FormatFileSizeToString(), NetworkInterfaceCount = networkInfos.Count, GpuCount = gpuInfos.Count, }; } catch (Exception ex) { Log.Error($"获取系统硬件摘要失败: {ex.Message}"); return new SystemHardwareSummary(); } } /// /// 获取硬件信息诊断报告 /// /// 诊断报告 public static HardwareDiagnosticReport GetDiagnosticReport() { var report = new HardwareDiagnosticReport(); try { var cpuInfo = CpuHelper.CpuInfos; var ramInfo = RamHelper.RamInfos; var diskInfos = DiskHelper.DiskInfos; // CPU诊断 if (cpuInfo.UsagePercentage > 90) { report.Issues.Add("CPU使用率过高 (>90%)"); } if (cpuInfo.Temperature.HasValue && cpuInfo.Temperature > 80) { report.Issues.Add($"CPU温度过高 ({cpuInfo.Temperature:F1}°C)"); } // 内存诊断 if (ramInfo.UsagePercentage > 90) { report.Issues.Add("内存使用率过高 (>90%)"); } if (ramInfo.AvailablePercentage < 5) { report.Issues.Add("可用内存不足 (<5%)"); } // 磁盘诊断 foreach (var disk in diskInfos) { if (disk.AvailableRate < 10) { report.Issues.Add($"磁盘 {disk.DiskName} 可用空间不足 (<10%)"); } } report.Status = report.Issues.Count == 0 ? "正常" : "发现问题"; } catch (Exception) { report.Status = "诊断失败"; } return report; } } /// /// 系统硬件信息 /// public record SystemHardwareInfo { /// /// CPU信息 /// public CpuInfo CpuInfo { get; set; } = new(); /// /// 内存信息 /// public RamInfo RamInfo { get; set; } = new(); /// /// 磁盘信息列表 /// public List DiskInfos { get; set; } = []; /// /// 网络接口信息列表 /// public List NetworkInfos { get; set; } = []; /// /// GPU信息列表 /// public List GpuInfos { get; set; } = []; /// /// 主板信息 /// public BoardInfo BoardInfo { get; set; } = new(); } /// /// 系统硬件摘要信息 /// public record SystemHardwareSummary { /// /// CPU名称 /// public string CpuName { get; set; } = string.Empty; /// /// CPU核心数 /// public string CpuCores { get; set; } = string.Empty; /// /// CPU使用率 /// public string CpuUsage { get; set; } = string.Empty; /// /// 总内存 /// public string TotalMemory { get; set; } = string.Empty; /// /// 内存使用率 /// public string MemoryUsage { get; set; } = string.Empty; /// /// 总磁盘空间 /// public string TotalDiskSpace { get; set; } = string.Empty; /// /// 网络接口数量 /// public int NetworkInterfaceCount { get; set; } /// /// GPU数量 /// public int GpuCount { get; set; } /// /// 主要GPU /// public string PrimaryGpu { get; set; } = string.Empty; } /// /// 硬件诊断报告 /// public record HardwareDiagnosticReport { /// /// 诊断状态 /// public string Status { get; set; } = string.Empty; /// /// 发现的问题列表 /// public List Issues { get; set; } = []; /// /// 建议列表 /// public List Recommendations { get; set; } = []; }