8

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

4

3 回答 3

21

为此使用System.Management命名空间Win32_VolumeWMI 类DriveLetter您可以使用of查询实例C:并检索其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...
    }
}

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

于 2013-01-21T17:16:48.807 回答
0

这是 vb.net 的等价物,以防您需要翻译它。

        Dim path = New ManagementPath With {.NamespacePath = "root\cimv2",
                                          .Server = "<REMOTE HOST OR IP>"}
    Dim scope = New ManagementScope(path)
    Dim condition = "DriveLetter = 'C:'"
    Dim selectedProperties = {"FreeSpace"}
    Dim query = New SelectQuery("Win32_Volume", condition, selectedProperties)
    Dim searcher = New ManagementObjectSearcher(scope, query)
    Dim results = searcher.Get()
    Dim volume = results.Cast(Of ManagementObject).SingleOrDefault()
    If volume IsNot Nothing Then
        Dim freeSpace As ULong = volume.GetPropertyValue("FreeSpace")

    End If
于 2015-07-27T10:07:58.120 回答
0

在尝试让 WMI 远程工作但没有成功之后,我发现了使用性能计数器的替代方法。只需使用所需的驱动器号(附加“:”)作为实例名称检查类别中的Free Megabytes计数器,LogicalDisk即可获得驱动器可用空间的更新读数:

"LogicalDisk(C:)\Free Megabytes"

您可以通过PerformanceCounter Class在 C# 中以编程方式访问它。

要远程访问它,您需要为性能计数器类构造函数指定服务器名称,并且必须将模拟帐户添加到“Performance Monitor Users”组:

net localgroup "Performance Monitor Users" %username% /add
于 2021-09-01T01:13:36.477 回答