using System;
using System.Collections.Generic;
using System.Linq;
using System.Management;//这里需要添加dll。
using System.Text;
namespace LCore
{
/// <summary>
/// 磁盘信息类。
/// </summary>
public class LHarddiskInfo
{
LHarddiskInfo() { }
/// <summary>
/// 构造函数。
/// </summary>
/// <param name="diskName">磁盘名称。</param>
public LHarddiskInfo(string diskName)
{
GetHarddiskInfo(diskName);
}
private string name;
private double freeSpace;
private double totalSpace;
/// <summary>
/// 磁盘名称。
/// </summary>
public string Name { get { return this.name; } }
/// <summary>
/// 磁盘可用空间。
///<para>单位:GB。</para>
/// </summary>
public double FreeSpace { get { return this.freeSpace; } }
/// <summary>
/// 磁盘总容量。
///<para>单位:GB。</para>
/// </summary>
public double TotalSpace { get { return this.totalSpace; } }
/// <summary>
/// 是否为系统分区。
/// </summary>
public bool IsPrimary { get { return System.Environment.GetEnvironmentVariable("windir").Remove(2) == this.Name; } }
#region # 获取磁盘信息。+ public static List<LHarddiskInfo> GetHarddiskInfoList() #
/// <summary>
/// 获取磁盘信息。
/// </summary>
/// <returns></returns>
public static List<LHarddiskInfo> GetHarddiskInfoList()
{
List<LHarddiskInfo> 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<LHarddiskInfo>();
foreach (ManagementObject disk in searcher.Get())
{
if (Convert.ToInt32(disk["DriveType"]) != Convert.ToInt32(System.IO.DriveType.Fixed))
continue;
else
{
LHarddiskInfo harddisk = new LHarddiskInfo();
harddisk.freeSpace = Convert.ToDouble(disk["FreeSpace"]) / (1024 * 1024 * 1024);
harddisk.totalSpace = Convert.ToDouble(disk["Size"]) / (1024 * 1024 * 1024);
harddisk.name = disk["DeviceID"].ToString();
list.Add(harddisk);
}
}
}
}
catch (Exception ex)
{
throw ex;
}
return list;
}
#endregion
#region # 获取指定盘符的信息。+ public LHarddiskInfo GetHarddiskInfo(string diskName) #
/// <summary>
/// 获取指定盘符的信息。
/// </summary>
/// <param name="diskName">盘符名称。</param>
/// <returns></returns>
private void GetHarddiskInfo(string diskName)
{
try
{
SelectQuery selectQuery = new SelectQuery("select * from win32_logicaldisk");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(selectQuery);
ManagementObjectCollection diskcollection = searcher.Get();
if (diskcollection != null && diskcollection.Count > 0)
{
foreach (ManagementObject disk in searcher.Get())
{
if (Convert.ToInt32(disk["DriveType"]) != Convert.ToInt32(System.IO.DriveType.Fixed))
continue;
else
{
if (disk["DeviceID"].ToString() == diskName.ToUpper() + ":")
{
this.freeSpace = Convert.ToDouble(disk["FreeSpace"]) / (1024 * 1024 * 1024);
this.totalSpace = Convert.ToDouble(disk["Size"]) / (1024 * 1024 * 1024);
this.name = disk["DeviceID"].ToString();
break;
}
}
}
}
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
}
}
获取硬盘容量
最新推荐文章于 2022-02-15 22:49:49 发布