代码之家  ›  专栏  ›  技术社区  ›  Xn0vv3r

如何在C语言中获取U盘的序列号#

  •  16
  • Xn0vv3r  · 技术社区  · 16 年前

    如何在C#中获取U盘或USB硬盘的内部序列号?

    3 回复  |  直到 16 年前
        1
  •  32
  •   Marcel Popescu    11 年前

    试试这个:

    // add a reference to the System.Management assembly and
    // import the System.Management namespace at the top in your "using" statement.
    // Then in a method, or on a button click:
    
    ManagementObjectSearcher theSearcher = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive WHERE InterfaceType='USB'");
    foreach (ManagementObject currentObject in theSearcher.Get())
    {
       ManagementObject theSerialNumberObjectQuery = new ManagementObject("Win32_PhysicalMedia.Tag='" + currentObject["DeviceID"] + "'");
       MessageBox.Show(theSerialNumberObjectQuery["SerialNumber"].ToString());
    }
    

    资料来源: http://social.msdn.microsoft.com/forums/en-US/Vsexpressvcs/thread/f4447ed3-7e5f-4635-a28a-afff0b620156/

        2
  •  9
  •   41686d6564    7 年前

    使用Win32的解决方案 is described here

    编辑:原始链接似乎已丢失。上面是一个缓存副本,作者还在VB.Net中编写了一些示例代码,它是 still online here

        3
  •  6
  •   Dor Cohen    12 年前

    我通过查看当前对象上的属性PNPDeviceId解决了这个问题。

    例如。

    currentObject["PNPDeviceID"].ToString();
    

    不确定这是否有效,但在我试过的3个U盘上它对我有效