# usb磁盘监控程序 **Repository Path**: ibdp/usb-disk-monitoring-program ## Basic Information - **Project Name**: usb磁盘监控程序 - **Description**: 实现windows下USB加载和卸载U盘的监控 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-18 - **Last Updated**: 2026-03-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # USB磁盘监控应用 ## 项目描述 这是一个基于C# WinForms的USB磁盘监控应用,用于实时监控Windows系统中USB端口的设备连接状态和磁盘信息。该应用可以检测USB设备的插入和移除事件,并提供详细的磁盘信息,包括端口标识、磁盘名称、类型、序列号、容量和分区信息。 ## 功能特性 - **实时USB设备监控**:监听USB设备的插入和移除事件 - **详细磁盘信息**:显示USB端口标识、磁盘名称、磁盘类型、序列号、总容量、分区数和卷标信息 - **多类型磁盘支持**:支持USB、IDE和SCSI类型的磁盘监控 - **固定USB端口标识**:使用硬件ID、GUID等方式生成固定的USB端口标识,确保设备重连时标识一致 - **错误处理**:完善的错误处理和日志记录机制 - **跨Windows版本支持**:兼容Windows 7/10/11环境 ## 技术实现 - **开发语言**:C# - **UI框架**:Windows Forms - **设备监控**:使用Windows消息机制(WM_DEVICECHANGE)监听设备变化 - **磁盘信息获取**:使用WMI(Windows Management Instrumentation)查询磁盘信息 - **USB端口标识**:通过多种方式获取USB设备的硬件ID、GUID等唯一标识 - **错误处理**:全面的异常捕获和日志记录 ## 安装说明 ### 前提条件 - Windows 7/10/11操作系统 - .NET Framework 4.7.2或更高版本 - Visual Studio 2019或更高版本(用于编译) ### 编译步骤 1. 克隆或下载项目到本地 2. 使用Visual Studio打开 `WinFormsApp1.slnx` 解决方案 3. 恢复NuGet依赖项(System.Management) 4. 编译项目(Ctrl+Shift+B) 5. 运行应用(F5) ### 直接运行 1. 进入 `WinFormsApp1\bin\Debug\net10.0-windows` 目录 2. 双击 `WinFormsApp1.exe` 运行应用 ## 使用方法 1. 启动应用后,系统会自动开始监控USB设备 2. 应用主界面包含两个标签页: - **磁盘监控**:显示当前连接的所有USB、IDE和SCSI磁盘的详细信息 - **变动情况**:记录设备插入和移除的事件日志 3. 当插入或移除USB设备时,应用会自动刷新磁盘信息并记录相关事件 4. 应用会在后台持续监控设备变化,无需手动刷新 ## USB端口标识说明 应用使用多种方式获取USB端口的唯一标识,确保设备重连时标识一致: 1. **从PNPDeviceID提取**:获取设备的硬件ID信息 2. **从USB控制器设备提取**:获取USB设备的VID、PID和序列号 3. **从USB Hub提取**:获取USB集线器的硬件信息 4. **使用设备ID生成**:当其他方法失败时,使用设备ID的哈希值生成固定标识 5. **使用磁盘序列号生成**:作为最终备用方案 ## 日志记录 应用会将所有操作和事件记录到以下位置: - **界面日志**:在"变动情况"标签页中显示 - **文件日志**:在应用目录下生成 `app.log` 文件 ## 注意事项 - 应用需要管理员权限才能访问某些WMI信息 - 对于某些特殊USB设备,可能无法获取完整的硬件ID信息 - 应用会在设备插入/移除后延迟500毫秒刷新信息,以确保设备完全就绪 ## 项目结构 ``` WinFormsApp1/ ├── WinFormsApp1/ │ ├── Form1.cs # 主窗体实现 │ ├── Form1.Designer.cs # 窗体设计器代码 │ ├── Form1.resx # 资源文件 │ ├── Program.cs # 应用入口 │ └── WinFormsApp1.csproj # 项目配置 ├── WinFormsApp1.slnx # 解决方案文件 └── README.md # 项目说明文档 ``` ## 故障排除 ### 常见问题 1. **无法获取磁盘信息** - 确保应用以管理员身份运行 - 检查WMI服务是否正常运行 2. **USB端口标识不固定** - 应用会尝试多种方式获取固定标识,如果所有方法都失败,会使用设备ID生成固定标识 3. **应用崩溃或无响应** - 查看 `app.log` 文件获取详细错误信息 - 确保.NET Framework版本符合要求 ## 许可证 本项目为开源项目,使用MIT许可证。 ## 联系方式 如有问题或建议,请联系项目维护者。