You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Windows Service访问服务端数据库实现局域网USB设备插拔监控

局域网USB插拔监控数据同步方案

你已经完成了客户端采集层的开发,只需要补全服务端接收层+数据存储层的链路即可,整个架构是典型的轻量C/S架构,局域网场景下不需要公网穿透,实现成本极低。

具体实施步骤

1. 开发服务端数据接收接口

  • 局域网服务器用任意熟悉的后端框架开发轻量HTTP POST接口即可,可选方案包括Python FastAPI、C# ASP.NET Core、Java SpringBoot等,接口接收参数和你已采集的字段对应即可:客户端IP、操作时间、USB设备名称、操作类型(插入/拔出),可额外扩展客户端主机名、USB设备序列号字段方便后续问题定位
  • 接口增加基础校验逻辑:比如配置固定的请求头校验密钥,只有携带正确密钥的客户端请求才会被处理,避免局域网内非法请求写入脏数据

2. 改造现有Windows Service逻辑

  • 在原有采集逻辑基础上增加上报模块:每次捕获到USB插拔事件后,构造POST请求调用服务端接口上报数据,局域网内延迟极低基本可以做到实时同步
  • 增加失败重试+离线缓存机制:如果服务器临时不可用(网络波动、维护),将事件暂存到本地SQLite数据库或加密文本文件中,网络恢复后批量补报,避免数据丢失
  • 上报地址直接配置为服务端的固定局域网IP+端口,比如http://192.168.3.20:8090/api/usb/report,无需配置域名,减少额外的局域网DNS部署成本

3. 搭建服务端数据库

  • 终端规模小于100台的场景用轻量SQLite即可,更大规模推荐用MySQL、PostgreSQL等关系型数据库
  • 参考表结构设计:
CREATE TABLE usb_operation_log (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
    client_ip VARCHAR(15) NOT NULL COMMENT '终端IP',
    client_hostname VARCHAR(50) COMMENT '终端主机名',
    operation_time DATETIME NOT NULL COMMENT '插拔操作时间',
    usb_device_name VARCHAR(100) NOT NULL COMMENT 'USB设备名称',
    usb_serial VARCHAR(50) COMMENT 'USB设备序列号',
    operation_type TINYINT NOT NULL COMMENT '操作类型:1=插入,2=拔出',
    report_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '数据上报时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  • 给client_ip、operation_time字段加索引,提升后续按终端、按时间范围查询的效率

4. 测试与批量部署

  • 先选2-3台测试终端安装Service,验证插拔事件上报、离线补报、数据落库的逻辑是否正常
  • 验证无误后通过域策略推送、批处理脚本等方式批量部署到所有需要监控的终端,无需逐台手动安装

优化建议

  • 服务端可扩展白名单校验逻辑:如果插入的USB设备不在预设白名单内,直接触发内网告警推送给管理员
  • 可以配套开发极简的Web管理页,支持历史记录查询、报表导出、白名单配置等功能,小团队内部使用的话半天即可完成开发
  • 客户端Service配置为开机自启、异常自动重启,避免终端用户手动停止服务逃避监控

内容的提问来源于stack exchange,提问作者rhylexthegun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 02:45:01