1、首先建立类库
public class HardDiskPartition
{
private string _PartitionName;//分区名称
private double _FreeSpace;//空余大小
private double _SumSpace;//总空间
public double FreeSpace
{
get { return _FreeSpace; }
set { this._FreeSpace = value; }
}
///
/// 使用空间
///
public double UseSpace
{
get { return _SumSpace - _FreeSpace; }
}
///
/// 总空间
///
public double SumSpace
{
get { return _SumSpace; }
set { this._SumSpace = value; }
}
///
/// 分区名称
///
public string PartitionName
{
get { return _PartitionName; }
set { this._PartitionName = value; }
}
///
/// 是否主分区
///
public bool IsPrimary
{
get
{
//判断是否为系统安装分区
if (System.Environment.GetEnvironmentVariable("windir").Remove(2) == this._PartitionName)
{
return true;
}
else
{
return false;
}
}
}
}
2、获取磁盘容量方法
private void button1_Click(object sender, EventArgs e)
{
try
{
List<HardDiskPartition> listInfo = GetDiskListInfo();
if (listInfo != null && listInfo.Count > 0)
{
//listBox1.Items.Clear();
foreach (HardDiskPartition disk in listInfo)
{
//listBox1.Items.Add(string.Format("{0} 总空间:{1} GB,剩余:{2} GB", disk.PartitionName, ManagerDoubleValue(disk.SumSpace, 1), ManagerDoubleValue(disk.FreeSpace, 1)));
MessageBox.Show("分区名称" + disk.PartitionName + "总空间为:" + ManagerDoubleValue(disk.SumSpace, 1)+"GB"+"剩余空间:"+ManagerDoubleValue(disk.FreeSpace, 1)+"GB");
}
}
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 处理Double值,精确到小数点后几位
/// </summary>
/// <param name="_value">值</param>
/// <param name="Length">精确到小数点后几位</param>
/// <returns>返回值</returns>
private double ManagerDoubleValue(double _value, int Length)
{
if (Length < 0)
{
Length = 0;
}
return System.Math.Round(_value, Length);
}
/// <summary>
/// 获取硬盘上所有的盘符空间信息列表
/// </summary>
/// <returns></returns>
private List<HardDiskPartition> GetDiskListInfo()
{
List<HardDiskPartition> list = null;
//指定分区的容量信息
try
{
SelectQuery selectQuery = new SelectQuery("select * from win32_logicaldisk");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(selectQuery);
ManagementObjectCollection diskcollection = searcher.Get();
if (diskcollection != null && diskcollection.Count > 0)
{
list = new List<HardDiskPartition>();
HardDiskPartition harddisk = null;
foreach (ManagementObject disk in searcher.Get())
{
int nType = Convert.ToInt32(disk["DriveType"]);
if (nType != Convert.ToInt32(DriveType.Fixed))
{
continue;
}
else
{
harddisk = new HardDiskPartition();
harddisk.FreeSpace = Convert.ToDouble(disk["FreeSpace"]) / (1024 * 1024 * 1024);
harddisk.SumSpace = Convert.ToDouble(disk["Size"]) / (1024 * 1024 * 1024);
harddisk.PartitionName = disk["DeviceID"].ToString();
list.Add(harddisk);
}
}
}
}
catch (Exception)
{
}
return list;
}