ここに私が持っているものがあります:
public static bool DriveHasLessThanTenPercentFreeSpace(string server)
{
long driveSize = 0;
long freeSpace = 0;
var oConn = new ConnectionOptions {Username = "username", Password = Settings.Default.SQLServerAdminPassword};
var scope = new ManagementScope("\\\\" + server + "\\root\\CIMV2", oConn);
scope.Connect();
var query = new ObjectQuery("SELECT FreeSpace FROM Win32_LogicalDisk where DeviceID = 'D:'");
var searcher = new ManagementObjectSearcher(scope, query);
ManagementObjectCollection queryCollection = searcher.Get();
foreach (ManagementObject m in queryCollection)
{
//the FreeSpace value is in bytes
freeSpace = Convert.ToInt64(m["FreeSpace"]);
//error happens here!
driveSize = Convert.ToInt64(m["Size"]);
}
long percentFree = ((freeSpace / driveSize) * 100);
if (percentFree < 10)
{
return true;
}
return false;
}
このコード行は私にエラーを与えています:
driveSize = Convert.ToInt64(m["Size"]);
エラーは言う:
ManagementException was unhandled by user code
見つかりません
ドライブのサイズを取得するためのクエリが間違っていると思います。
次の行で freeSpace 値を取得していることに注意してください。
freeSpace = Convert.ToInt64(m["FreeSpace"]);
したがって、クエリが freeSpace で機能していることはわかっています。
誰か手を貸してくれませんか?