0

これは、クエリ用のコードです。

public String getDriveID()
{
    String wow = @"win32_logicaldisk.deviceid=\" + @driveID;

    ManagementObject disk = new ManagementObject(wow);
    disk.Get();
    Console.WriteLine(disk["Name"]);
    return disk["Name"].ToString();
}

そして、これがdriveIDメソッドが使用する String を作成するものです。

DriveInfo dInfo = therehasgottobeanotherway[driveList.SelectedIndex];

if (dInfo.IsReady) {
    diskWMI dwmi = new diskWMI(dInfo.Name);
}

DriveInfoクラスに慣れていない場合、Name属性はドライブの名前を返します。たとえば、c:\

私がやろうとしているのとまったく同じことをするこのコードをオンラインで見つけましたが、それを使用しようとすると常にエラーが発生します:

ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid=\"c:\"");
disk.Get();
Console.WriteLine(disk["VolumeName"]);
Console.ReadLine();

書式設定エラーが発生していると思いますが、何を変更すればよいかわかりません。

ドライブ名を渡そうとしていますdeviceid=

4

3 に答える 3

1
public string GetHDDSerialNumber(string drive)
{
    //check to see if the user provided a drive letter
    //if not default it to "C"
    if (drive == "" || drive == null)
    {
        drive = "C";
    }
    //create our ManagementObject, passing it the drive letter to the
    //DevideID using WQL
    ManagementObject disk = new ManagementObject("Win32_LogicalDisk.DeviceID=\"" + drive + ":\"");
    //bind our management object
    disk.Get();
    //return the serial number
    return disk["VolumeSerialNumber"].ToString();
}

またはあなたの既存の例では、これはあなたのために働くでしょう

String drive = "c";
ManagementObject disk = new ManagementObject("Win32_LogicalDisk.DeviceID=\"" + drive + ":\"");
disk.Get();
Console.WriteLine(disk["VolumeName"]);
Console.ReadLine();
于 2012-09-19T21:56:37.037 に答える
0

deviceId からバックスラッシュを削除すると、機能するはずです。あなたが言及したリンクにはバックスラッシュがあります :String drive = @"C:\"; =>文字列ドライブ = @"C:" ;

于 2012-09-19T22:25:18.793 に答える
0

本当の答えではありませんが、あなたのコードを取得して以下を実行したことを確認できます。

namespace ConsoleApplication1
{
    using System;
    using System.Management;

    class Program
    {
        static void Main(string[] args)
        {
            ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid=\"c:\"");
            disk.Get();
            Console.WriteLine(disk["VolumeName"]);
            Console.ReadLine();
        }
    }
}

コンソールウィンドウに名前を表示して失敗しました。

于 2012-09-19T20:41:51.310 に答える