Skip to content

Axuan9945/Asset-Sonar-master

Repository files navigation

 

Asset Sonar (资产声呐) - IT 运维工具箱

 

一款为 IT 专业人员和系统管理员量身打造的现代化 Windows 桌面 IT 工具箱,旨在将硬件资产扫描、系统诊断、网络发现和日常运维修复等工作化繁为简。  

 

语言 .NET 8.0 平台 许可证  

Asset Sonar 是一款基于 WinUI 3 和 .NET 8 构建的模块化应用程序。它利用现代化的界面和可扩展的架构,为 IT 运维人员提供了一个集成的多功能工具箱。

最初它是一个资产扫描器,现已发展为一个包含多个独立工具的运维平台。

✨ 主要功能模块

Asset Sonar 将功能划分为多个独立的模块,您可以通过左侧的导航菜单轻松访问。

1. 资产管理 (主页)

这是应用的核心功能,专注于硬件盘点与同步。

  • 💻 全方位硬件扫描: 通过 WMI 并行扫描并聚合关键硬件信息:
    • 主板/整机: 品牌、型号、序列号,并为戴尔、惠普、联想等主流品牌自动生成保修查询链接。
    • 处理器 (CPU): 制造商、完整型号及处理器ID。
    • 内存 (RAM): 制造商、型号、容量、序列号、类型 (DDR3/4/5) 和频率。
    • 显卡 (GPU)硬盘 (Disk)显示器网卡外设
    • 系统信息: 操作系统版本、序列号及激活状态。
  • 🔄 Snipe-IT 集成:
    • 通过 API 将扫描到的硬件信息自动同步到您的 Snipe-IT 平台。
    • 智能资产管理:根据序列号 (GET /api/v1/hardware/byserial/...) 自动判断是创建新资产还是更新现有资产。
    • 自动关联:自动“Get-or-Create”制造商、型号、分类,并将内存、硬盘等作为组件关联到主资产。
  • 📄 多格式数据导出: 一键将扫描到的硬件信息导出为多种专业报告格式:
    • Excel (.xlsx): 使用 ClosedXML 生成结构化的工作簿。
    • CSV (.csv): 快速生成通用的 UTF-8 编码文件。
    • PDF (.pdf): 使用 QuestPDF 创建专业、美观的硬件信息报告。

2. IT 运维工具箱

一系列为解决日常 IT 问题而设计的独立工具模块。

  • 🌐 网络扫描:
    • 扫描并发现局域网内的所有活动设备。
    • 以贴片风格 UI 实时显示其 IP 地址、主机名、在线状态和网络延迟(ms)。
  • 🩺 系统诊断:
    • 运行一系列健康检查,快速评估系统状态。
    • 检查项包括: CPU/内存使用率、关键服务状态、硬盘健康度 (S.M.A.R.T.)、内外网连通性 (Ping 百度和 Google DNS 8.8.8.8)。
    • 采用 Win11 风格的自适应贴片 UI 展示结果。
  • 🖨️ 打印机共享修复:
    • 一个专门用于解决 Windows 打印机共享疑难杂症的工具集。
    • 修复功能包括:
      1. 重启打印后台处理程序 (Spooler)。
      2. 一键应用“文件和打印机共享”防火墙规则。
      3. 应用 0x0000011b (PrintNightmare) 兼容性注册表修复。
      4. 应用 0x00000709 (默认打印机) 注册表修复。
      5. 重置 WMI 存储库 (winmgmt /salvagerepository)。
      6. [高风险] 清理打印机驱动程序缓存 (删除 System32\spool\drivers 下的内容)。
  • 💻 已安装软件列表:
    • 扫描注册表 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall (及 WOW6432Node 节点),快速列出本机安装的所有应用程序。
    • 使用可排序、可调整大小的 DataGrid 控件显示程序名称、版本、发布者和安装日期。
  • 🗑️ 系统清理工具:
    • 提供一个安全、可视化的界面来清理常见的系统垃圾文件。
    • 清理选项包括:
      1. 用户临时文件 (%TEMP%)
      2. Windows 临时文件 (C:\Windows\Temp)
      3. Windows 更新缓存 (SoftwareDistribution\Download)
      4. 清空回收站 (通过 PowerShell Clear-RecycleBin)

3. 配置中心

  • ⚙️ 多方案配置:
    • 通过应用内的“配置”页面管理 Snipe-IT 服务器信息、用户信息以及 类别ID映射资产标签前缀/代码
    • 多配置方案支持:通过便携的 profiles.json 文件在应用内管理多套 Snipe-IT 服务器配置和用户信息。

🛠️ 技术架构深度解析

Asset Sonar 采用了一系列现代 .NET 技术和成熟的软件设计模式,确保了其高性能、高可扩展性和高可维护性。

1. 项目结构

解决方案 (ItAssetTool.sln) 被清晰地划分为四个工程:

  1. ItAssetTool.Core: 核心库。定义了整个应用共享的数据模型(如 HardwareInfo, InstalledProgram, CleanupItem)和所有插件接口(IScanPlugin, IExportPlugin 等)。
  2. ItAssetTool.Logic: 逻辑层。包含了 PluginManager,负责在运行时动态加载插件 DLL。
  3. ItAssetTool.Plugins: 插件库。包含了所有实际的业务逻辑实现(如 ScanCpu.cs, SyncSnipeIT.cs, HealthCheckDiagnosticPlugin.cs 等)。
  4. ItAssetTool: 主应用程序。负责所有 UI (Views)、ViewModels、窗口管理 (MainWindow.xaml) 和 DI 容器的配置 (App.xaml.cs)。

2. 核心设计模式

  • MVVM (Model-View-ViewModel): 使用 CommunityToolkit.Mvvm 库实现,彻底分离了UI (.xaml) 和业务逻辑 (.cs ViewModel)。
  • 依赖注入 (Dependency Injection): 通过 Microsoft.Extensions.DependencyInjection 统一管理所有 ViewModel 和服务(如 ILogger)的生命周期。
  • 插件化架构 (Plugin-Based Architecture): 核心扫描功能(IScanPlugin 等)由 PluginManager 在运行时动态加载 ItAssetTool.Plugins.dll
  • 工具箱模式 (Toolbox Pattern): 新的运维功能(如打印机修复、系统清理)作为独立的 Page/ViewModel 对,在 App.xaml.cs 中注册,并通过 NavigationView (MainWindow.xaml) 和 MapsToPage (MainWindow.xaml.cs) 进行导航。

3. 核心库依赖

  • System.Management: 用于通过 WMI 获取底层硬件信息。
  • System.ServiceProcess.ServiceController: 用于管理 Windows 服务(如打印机 Spooler)。
  • Microsoft.Win32.Registry: 用于执行注册表修复操作。
  • Serilog: 用于强大的结构化日志记录,输出到文件和调试窗口。
  • ClosedXML: 用于创建和操作 Excel (.xlsx) 文件。
  • QuestPDF: 用于生成专业、美观的 PDF 文档。
  • CommunityToolkit.WinUI.UI.Controls: 提供高级 UI 控件,如 DataGrid (软件列表) 和 GridSplitter (可拖动布局)。

🚀 如何扩展工具箱 (开发者指南)

本项目被设计为易于扩展。要添加一个像“打印机修复”或“系统清理”这样的新工具页面,请遵循以下 8 步模式:

  1. (可选) 在 ItAssetTool.Core 中创建数据模型: 如果您的工具需要新的数据结构(如 CleanupItem),请在此项目中定义它。

  2. ItAssetTool/ViewModels 中创建 ViewModel: 创建一个新的 .cs 文件 (例如 MyToolViewModel.cs),继承 ObservableObject,并在此处编写所有 C# 逻辑(按钮命令、数据加载等)。

  3. ItAssetTool/Views 中创建 View (XAML): 创建一个新的 Page (例如 MyToolPage.xaml),并使用 x:Bind 将其 UI 元素绑定到 ViewModel 的属性上。

  4. ItAssetTool/Views 中创建 View-behind (XAML.cs): 创建对应的 MyToolPage.xaml.cs 文件。在构造函数中,从 App.Services 获取 ViewModel 实例并将其设置为 this.DataContext

  5. App.xaml.cs 中注册 ViewModel:ConfigureServices 方法中,添加 services.AddTransient<MyToolViewModel>();

  6. ItAssetTool.csproj 中注册 View: 添加 <Page Update="Views\MyToolPage.xaml"><Generator>MSBuild:Compile</Generator></Page>

  7. MainWindow.xaml 中添加菜单项: 添加一个新的 <NavigationViewItem Content="我的工具" Tag="MyToolPage" Icon="..."/>

  8. MainWindow.xaml.cs 中添加导航逻辑:MapsToPage 方法的 switch 语句中,添加 case "MyToolPage": return typeof(MyToolPage);


⚙️ 配置

  • Snipe-IT 配置 (profiles.json): 首次运行后,应用会在程序运行的根目录 (与 .exe 文件同级) 自动创建一个 profiles.json 文件。您必须通过应用内的 “配置” 页面 来图形化地管理 Snipe-IT 的连接信息。

    • 关键字段: InternalUrl / ExternalUrl, ApiKey
    • ID 映射: 必须正确配置 CATEGORY_ID_MAPCOMPONENT_CATEGORY_ID_MAP,使其与您的 Snipe-IT 实例中的类别 ID 一致。
  • 扫描配置 (snipeit_config.json): 此文件 位于程序根目录,用于定义扫描时需要忽略的设备关键字 (如 virtual, vmware 等)。

🚀 开始使用

  1. 克隆仓库:

    git clone [https://github.com/axuan9945/asset-sonar.git](https://github.com/axuan9945/asset-sonar.git)
    cd asset-sonar
  2. 打开解决方案: 使用 Visual Studio 2022 (或更高版本) 打开 ItAssetTool.sln 文件。

    • 确保已安装 .NET 桌面开发通用 Windows 平台开发 工作负载。
  3. 恢复依赖: Visual Studio 应该会自动恢复所有 NuGet 包。

  4. 运行项目:

    • 在 Visual Studio 的顶部工具栏中,选择 ItAssetTool (Unpackaged) 作为启动项目。
    • [重要] 由于“打印机修复”、“系统清理”和“已安装软件”工具需要访问受保护的系统资源(服务、注册表、系统文件夹),您必须以管理员身份运行 Visual Studio 才能使所有功能正常工作。
    • 点击 "运行" 按钮 (或按 F5)。

📄 许可证

本项目采用 GNU General Public License v3.0 许可证。详情请参阅 LICENSE.txt 文件。

🙏 致谢

  • CommunityToolkit.Mvvm: 极大地简化了 MVVM 模式的实现。
  • CommunityToolkit.WinUI.UI.Controls: 提供了强大的 DataGridGridSplitter 控件。
  • ClosedXML: 提供了强大而易用的 Excel 文件操作功能。
  • QuestPDF: 一个出色、简洁的 .NET PDF 生成库。
  • 所有为 .NET 和 Windows App SDK 生态系统做出贡献的开发者们。

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published