如何从远程计算机的驱动器获取可用的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等甚至直接连接将其提供给监视应用程序。想。
如果这有用,请告诉我
马克斯
编辑:实际上,我误解了你的问题。 我以为你一开始就在寻找一种连接方式。 我会在这里留下这个答案,所以任何通过搜索找到这个的人都会发现它很有用。