C#.NET WINFORM程序 使用ManagementClass获取信息的问题
WINFORM程序,代码如下:publicstaticDataTabletestDisk(){DataTabledt=newDataTable();dt.Columns....
WINFORM程序,代码如下:
public static DataTable testDisk()
{
DataTable dt = new DataTable();
dt.Columns.Add("path");
dt.Columns.Add("totalSpace");
dt.Columns.Add("freeSpace");
dt.Columns.Add("freePencent");
ManagementClass diskClass = new ManagementClass("Win32_LogicalDisk");
ManagementObjectCollection disks = diskClass.GetInstances();
try
{
foreach (ManagementObject disk in disks)
{
DataRow dr;
UInt64 k = 1024;
dr = dt.NewRow();
dr[0] = disk["Name"].ToString();
dr[1] = (UInt64)(disk["FreeSpace"]) / k / k;//转为MB
dr[2] = (UInt64)(disk["Size"]) / k / k;//转为MB
int free = int.Parse((UInt64.Parse(dr[1].ToString())).ToString());
int total = int.Parse((UInt64.Parse(dr[2].ToString())).ToString());
dr[3] = (((free * 1.0000) / (total * 1.0000)) * 100).ToString("f2") + "%";
dr[1] += "MB";
dr[2] += "MB";
dt.Rows.Add(dr);
}
//MessageBox.Show(freeSpace.ToString());
return dt;
}
catch (Exception ex)
{
return dt;
}
}
在WIN7 SERVER2008中获取分区都正常,但是在2012中获取分区返回为空,尝试使用管理员身份运行也不行,求大神帮忙看下是什么地方的问题,是不是SERVER2012中不支持Win32_LogicalDisk,需要换成什么
补充,测试是在VM14.1.3的虚拟机中测试的,无法获取温度功耗传感器参数是可以理解的,但是无法获取磁盘分区信息就很奇怪了。编译环境VS2017,.NET4.7 展开
public static DataTable testDisk()
{
DataTable dt = new DataTable();
dt.Columns.Add("path");
dt.Columns.Add("totalSpace");
dt.Columns.Add("freeSpace");
dt.Columns.Add("freePencent");
ManagementClass diskClass = new ManagementClass("Win32_LogicalDisk");
ManagementObjectCollection disks = diskClass.GetInstances();
try
{
foreach (ManagementObject disk in disks)
{
DataRow dr;
UInt64 k = 1024;
dr = dt.NewRow();
dr[0] = disk["Name"].ToString();
dr[1] = (UInt64)(disk["FreeSpace"]) / k / k;//转为MB
dr[2] = (UInt64)(disk["Size"]) / k / k;//转为MB
int free = int.Parse((UInt64.Parse(dr[1].ToString())).ToString());
int total = int.Parse((UInt64.Parse(dr[2].ToString())).ToString());
dr[3] = (((free * 1.0000) / (total * 1.0000)) * 100).ToString("f2") + "%";
dr[1] += "MB";
dr[2] += "MB";
dt.Rows.Add(dr);
}
//MessageBox.Show(freeSpace.ToString());
return dt;
}
catch (Exception ex)
{
return dt;
}
}
在WIN7 SERVER2008中获取分区都正常,但是在2012中获取分区返回为空,尝试使用管理员身份运行也不行,求大神帮忙看下是什么地方的问题,是不是SERVER2012中不支持Win32_LogicalDisk,需要换成什么
补充,测试是在VM14.1.3的虚拟机中测试的,无法获取温度功耗传感器参数是可以理解的,但是无法获取磁盘分区信息就很奇怪了。编译环境VS2017,.NET4.7 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询