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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:25:02