내가 C#으로 WMI를 통해 디스크 사용량에 대한 정보를 수집하기 위해 사용하는 것입니다 :
private List<DiskInfo> GetDiskInfo()
{
List<DiskInfo> disks = new List<DiskInfo>();
SelectQuery query = new SelectQuery("SELECT Size, FreeSpace, Name, FileSystem FROM Win32_LogicalDisk WHERE DriveType = 3");
ManagementObjectSearcher moSearcher = new ManagementObjectSearcher(scope, query);
ManagementObjectCollection collection = moSearcher.Get();
foreach (ManagementObject res in collection)
{
float size = Convert.ToSingle(res["Size"])/1024f;
float usedSpace = size - (Convert.ToSingle(res["FreeSpace"])/1024f);
DiskInfo di = new DiskInfo();
di.Name = res["Name"].ToString();
di.Size = ConvertVal(size);
di.UsedSpace = ConvertVal(usedSpace);
if (size > 0)
{
di.PercentUsed = ((usedSpace/size) * 100).ToString("N0");
}
else
{
di.PercentUsed = "0";
}
if (res["FileSystem"] != null)
{
di.FileSystem = res["FileSystem"].ToString();
disks.Add(di);
}
}
return disks;
}
// handles returning the correct units
private string ConvertVal(float value)
{
float K = value;
float M = value/1024f;
float G = M/1024f;
float T = G/1024f;
string unit = "KB";
float val = K;
if (K >= 1024)
{
unit = "MB";
val = M;
}
if (M >= 1024)
{
unit = "GB";
val = G;
}
if (G >= 1024)
{
unit = "TB";
val = T;
}
return val.ToString("N2") + unit;
}
내가 주로 전체 ComputerInfo 클래스와 함께 위의 코드를 사용하는 내가 할 수있는 브라우저에 JSON을 반환하는 ASP.NET MVC 서비스에서 몇 초마다 jQuery AJAX를 호출하고 제공된 데이터로 즉석에서 페이지를 구성합니다. 난이 도움이되기를 바랍니다
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ComputerInfo.Models
{
public class DiskInfo
{
public string Name { get; set; }
public string Size { get; set; }
public string UsedSpace { get; set; }
public string PercentUsed { get; set; }
public string FileSystem { get; set; }
}
}
:
다음은 디스플레이로 쉽게 데이터를 만들기위한 내 DISKINFO 클래스입니다. 대답에 필요한 것이 있으면 알려주세요.
나는 조금 더 탐험하고 리프레쉬 객체가 vbscript 인 것으로 보인다. 그것이 일반적인 개념 인 것처럼 처음 보였다. – cstamas