【问题标题】:Get H/D Serial number (Not Volumn Serial Number) for IDE and SATA获取 IDE 和 SATA 的 H/D 序列号(不是卷序列号)
【发布时间】:2010-10-06 20:38:28
【问题描述】:

如何在 VB.NET 中读取 IDE 和 SATA 驱动器的硬盘序列号? (我不想要卷序列号)。

如果可能,应在没有管理权限的情况下为 XP 和 Vista 收集此信息。

【问题讨论】:

    标签: vb.net serial-number


    【解决方案1】:

    您可以像这样使用WMI (Windows Management Instrumentation):

    Dim mos As New ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia")
    
    For Each mo As ManagementObject In mos.Get()
        Dim serial As String = mo("SerialNumber").ToString()
    Next
    

    虽然,我读过一些使用 WMI 没有返回序列号的情况。实现此目的的另一种方法是通过平台调用服务 (PInvoke)。

    This文章包含一个下载,作者在VB.NET中实现CreateFile()和DeviceIoControl()通过Interop服务提取驱动信息。

    要使用上述任何一种方法,您都需要管理员权限,可以在here 找到一个似乎可以规避此问题的实用程序。如果您喜欢冒险,C++/Win32 source code 可供您阅读。 (查看函数'ReadPhysicalDriveInNTWithZeroRights()')

    【讨论】:

      【解决方案2】:

      这里是获取硬盘序列号的代码

          Dim HDD_Serial As String
      
          Dim hdd As New ManagementObjectSearcher("select * from Win32_DiskDrive")
      
          For Each hd In hdd.Get
      
              HDD_Serial = hd("SerialNumber")
              MsgBox(HDD_Serial)
          Next
      

      希望对你有帮助。

      【讨论】:

        【解决方案3】:
        Public Function getHardDiskSerialNo()
            Dim serial As String
        
            Dim hd As New ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia")
            For Each dvs As ManagementObject In hd.Get()
                serial = dvs("SerialNumber").ToString()
        
            Next
            Return serial
        
        End Function
        

        【讨论】:

        • 这被标记为低质量。请扩展您的代码唯一答案以解释代码的作用。
        猜你喜欢
        • 1970-01-01
        • 2017-09-28
        • 1970-01-01
        • 2015-05-31
        • 2013-10-31
        • 1970-01-01
        • 1970-01-01
        • 2011-01-04
        • 1970-01-01
        相关资源
        最近更新 更多