how to determine USB Flash drive manufacturer?

后端 未结 8 1200
栀梦
栀梦 2020-12-06 07:14

I need my program to work only with certain USB Flash drives (from a single manufacturer) and ignore all other USB Flash drives (from any other manufacturers).

is it

8条回答
  •  青春惊慌失措
    2020-12-06 07:47

    EDIT: Added code to print drive letter.


    Check if this example works for you. It uses WMI.

    Console.WriteLine("Manufacturer: {0}", queryObj["Manufacturer"]);
    ...
    Console.WriteLine("    Name: {0}", c["Name"]); // here it will print drive letter
    

    The full code sample:

    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();
            }
        }
    }
    

    I think those properties should help you distinguish genuine USB drives from the others. Test with several pen drives to check if the values are the same. See full reference for Win32_DiskDrive properties here:

    http://msdn.microsoft.com/en-us/library/aa394132(VS.85).aspx

    Check if this article is also of any help to you:

    http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/48a9758c-d4db-4144-bad1-e87f2e9fc979

提交回复
热议问题