从远程计算机获取驱动器信息

5 c# remote-desktop driveinfo

我可以从这篇文章中查看远程连接的PC :使用c-net的远程桌面.但我不需要它.我只需连接该PC并获取C盘的可用空间数据.我怎么能这样做?我可以连接到远程桌面.我可以使用IO命名空间获取driveInfo.但如何将它们结合起来?

BAC*_*CON 19

为此使用System.Management命名空间Win32_VolumeWMI类.您可以使用查询实例DriveLetterC:并检索其FreeSpace属性,如下所示:

ManagementPath path = new ManagementPath() {
    NamespacePath = @"root\cimv2",
    Server = "<REMOTE HOST OR IP>"
};
ManagementScope scope = new ManagementScope(path);
string condition = "DriveLetter = 'C:'";
string[] selectedProperties = new string[] { "FreeSpace" };
SelectQuery query = new SelectQuery("Win32_Volume", condition, selectedProperties);

using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query))
using (ManagementObjectCollection results = searcher.Get())
{
    ManagementObject volume = results.Cast<ManagementObject>().SingleOrDefault();

    if (volume != null)
    {
        ulong freeSpace = (ulong) volume.GetPropertyValue("FreeSpace");

        // Use freeSpace here...
    }
}
Run Code Online (Sandbox Code Playgroud)

还有一个Capacity属性存储卷的总大小.

  • 这取决于您的环境.可以使用[`scope.Options`属性](http://msdn.microsoft.com/library/system.management.managementscope.options.aspx)设置凭据和其他安全选项,这是[` ConnectionOptions`类](http://msdn.microsoft.com/library/system.management.connectionoptions.aspx). (2认同)
  • @Si8 您从哪里获得“准确”的可用空间?Windows资源管理器?您是使用 `freeSpace / 1024 / 1024 / 1024` 计算免费千兆字节,或者,我想是 `freeSpace / 1000 / 1000 / 1000` 吗? (2认同)