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

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

接近尾声,我收到一个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等甚至直接连接将其提供给监视应用程序。想。

如果这有用,请告诉我

马克斯

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