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

C# 如何从远程计算机的驱动器获取可用的空闲空间?,c#,wmi,wmi-query,C#,Wmi,Wmi Query,我正试图从远程计算机的D驱动器获得自由空间 最后,我发现一个ManagementException未被用户代码“Not Found”处理 这一行给出了错误:fs=m[“FreeSpace”].ToString() 这是我的密码: ConnectionOptions oConn = new ConnectionOptions(); oConn.Username = "username"; oConn.Password = "password"; oConn.Authority = "ntlmdo

我正试图从远程计算机的D驱动器获得自由空间

最后,我发现一个ManagementException未被用户代码“Not Found”处理

这一行给出了错误: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);
}

我发现了问题所在

我的疑问是错误的。我将其替换为:

"SELECT FreeSpace FROM Win32_LogicalDisk where DeviceID = 'D:'"
问题解决了。

我相信这应该会给你一个答案

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

要么导入GetDiskFreeSpaceEx并在驱动器路径上使用它,要么在事先连接的网络驱动器上使用WMI

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

如果您试图监视远程系统,您可以轻松创建一个小型应用程序/服务,该应用程序/服务将在该计算机上运行,并持续收集所需信息,然后使用类似WCF的方式或直接连接(如果您愿意)将其提供给监视应用程序

让我知道这是否有用

马克斯

编辑: 事实上,我误解了你的问题。我以为你一开始就在寻找一种联系的方式。不过,我会把这个答案留在这里,这样通过搜索找到这个答案的人可能会发现它很有用