各位朋友,如何用C#获取U盘的Manufacturer的值呢?U盘的Manufacturer的值在windows下面查看如下:
而我用代码取到的值确为:
Name:Manufacturer  Value:(Standard disk drives)
取Manufacturer的代码如下: ManagementObjectSearcher disks = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");
                                    foreach (ManagementObject disk in disks.Get())
                                    {
                                        String diskInterface = disk["InterfaceType"] as string;
                                        if ("USB".Equals(diskInterface))
                                        {
                                            StringBuilder sb = new StringBuilder();
                                            foreach (PropertyData data in disk.Properties)
                                            {
                                                sb.Append(data.Name + " | " + data.Value + "\r\n");
                                            }
Console.write(sb.ToString());//这里可以查看到Manufacturer的值,但是值为(Standard disk drives)
                                            String pnpDeviceId = disk["PNPDeviceID"] as String;  
                                        }
                                    }最后我取出来了pnpDeviceId 的值USBSTOR\DISK&VEN_SANDISK&PROD_DATA&REV_PMAP\20CF30E118F8ED31720E0190&0
,其中有一个VEN,不知道是不是微软的Manufacturer也是根据这个VEN_后面的值来提取出来的?各位有办法直接取出和系统显示一样的Manufacturer值吗?u盘ManufacturerPNPDeviceID

解决方案 »

  1.   


    namespace WMISample
    {
        using System;
        using System.Management;    public class MyWMIQuery
        {
            public static void Main()
            {
                try
                {
                    ManagementObjectSearcher searcher =
                        new ManagementObjectSearcher("root\\CIMV2",
                        "SELECT * FROM Win32_DiskDrive");                foreach (ManagementObject queryObj in searcher.Get())
                    {
                        Console.WriteLine("DeviceID: {0}", queryObj["DeviceID"]);
                        Console.WriteLine("PNPDeviceID: {0}", queryObj["PNPDeviceID"]);
                        Console.WriteLine("Manufacturer: {0}", queryObj["Manufacturer"]);
                        Console.WriteLine("Model: {0}", queryObj["Model"]);
                        foreach (ManagementObject b in queryObj.GetRelated("Win32_DiskPartition"))
                        {
                            Console.WriteLine("  Name: {0}", b["Name"]);
                            foreach (ManagementBaseObject c in b.GetRelated("Win32_LogicalDisk"))
                            {
                                Console.WriteLine("    Name: {0}", c["Name"]); // here it will print drive letter
                            }
                        }
                        // ...
                        Console.WriteLine("--------------------------------------------");
                    }      
                }
                catch (ManagementException e)
                {
                    Console.WriteLine(e.StackTrace);
                }            Console.ReadLine();
            }
        }
    }
    代码来自:
    how to determine USB Flash drive manufacturer?
    http://stackoverflow.com/questions/123986/how-to-determine-usb-flash-drive-manufacturer
      

  2.   

    你的代码我早就试过了,不行,得出来和我的结果是一样的(Standard disk drives)。