如何从远程计算机获取驱动器中的可用空间?

时间:2012-09-26 14:09:18

标签: c# wmi wmi-query

我正试图从远程计算机的D盘中获取FreeSpace。

接近结束时,我收到的用户代码“未找到”未处理ManagementException

这是给我错误的行:fs = m [“FreeSpace”]。ToString();

这是我的代码:

ConnectionOptions oConn = new ConnectionOptions();

oConn.Username = "username";
oConn.Password = "password";
oConn.Authority = "ntlmdomain:XXX";

ManagementScope scope = new ManagementScope("\\\\Remote_Computer\\root\\CIMV2", oConn);

scope.Connect();

ObjectQuery query = new ObjectQuery("SELECT DeviceID, VolumeName FROM Win32_LogicalDisk where DeviceID = 'D:'");

ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);

ManagementObjectCollection queryCollection = searcher.Get();

foreach (ManagementObject m in queryCollection)
{
      //error happens here
      fs = m["FreeSpace"].ToString();

      freeSpace = Convert.ToInt64(fs);
}

2 个答案:

答案 0 :(得分:2)

我发现了问题所在。

我的查询错了。我把它改为:

"SELECT FreeSpace FROM Win32_LogicalDisk where DeviceID = 'D:'"

问题解决了。

答案 1 :(得分:0)

我相信这个post应该有你的答案!!

基本上,它归结为两种方法之一:

导入GetDiskFreeSpaceEx并在驱动器路径上使用它,或者在预先连接的网络驱动器上使用WMI。

因此您需要具有此驱动器的网络访问权限。

如果您正在尝试监控远程系统,您可以轻松创建一个小型应用程序/服务,该应用程序/服务将在该计算机上运行并不断收集所需信息,然后使用WCF或甚至直接提供给监控应用程序如果你想要连接。

请告诉我这是否有用,

最高

修改 实际上,我误解了你的问题。我以为你一开始就在寻找一种连接方式。我会在这里留下这个答案,所以任何通过搜索找到这个的人都会发现它很有用。