如何在Windows系统下用Go语言获取硬盘(非分区)数量?
在Windows系统用Go获取硬盘数量的解决方案
刚好我之前也纠结过这个问题——用diskpart确实太麻烦,后来找到了一个靠谱的方法,借助Windows的WMI接口来实现,用github.com/StackExchange/wmi这个包就能搞定,完全不需要依赖diskpart,算是Go生态里适配Windows的原生友好方案了。
第一步:添加依赖
在你的Gopkg.toml中添加依赖声明:
required = ["github.com/stackexchange/wmi"]
第二步:实现获取硬盘数量的函数
下面是完整的核心代码,通过WMI查询物理硬盘实例来统计数量:
import "github.com/StackExchange/wmi" func getDiskCount() uint8 { // 定义结构体映射WMI的Win32_DiskDrive类,只保留我们需要的字段 type Win32DiskDrive struct { Index uint8 } var diskList []Win32DiskDrive // 查询所有物理硬盘的Index字段,实例总数就是硬盘数量 err := wmi.Query("SELECT Index FROM Win32_DiskDrive", &diskList) if err != nil { // 可根据需求添加错误处理逻辑,比如打印日志或返回默认值 return 0 } return uint8(len(diskList)) }
原理说明
Windows的WMI服务里的Win32_DiskDrive类专门用来描述系统中的物理硬盘,每一个实例对应一块物理硬盘。我们通过查询这个类的所有实例,统计实例的数量就能得到硬盘的总数,这个方法比调用diskpart更灵活,也更容易集成到Go代码里。
内容的提问来源于stack exchange,提问作者Zander Wong
相关产品推荐
相关产品推荐

