8

この記事からリモート接続されたPCを表示できます:c-netを使用したリモートデスクトップ。しかし、私はそれを必要としません。そのPCに接続して、Cドライブの空き容量データを取得するだけです。どうすればこれを行うことができますか?リモートデスクトップに接続できます。IO名前空間を使用してdriveInfoを取得できます。しかし、それらをどのように組み合わせるのですか?

4

3 に答える 3

21

System.Managementこれには、名前空間Win32_VolumeWMIクラスを使用します。DriveLetter次のように、のを使用してインスタンスをクエリし、そのプロパティを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 に答える