Get H/D Serial number (Not Volumn Serial Number) for IDE and SATA

前端 未结 3 484
有刺的猬
有刺的猬 2020-12-20 04:28

How can I read the hard disk serial number for IDE and SATA drives in VB.NET? (I don\'t want the volume serial number).

This info should be gathered both for XP and

相关标签:
3条回答
  • 2020-12-20 04:35
    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
    
    0 讨论(0)
  • 2020-12-20 04:41

    You can use WMI (Windows Management Instrumentation) like this:

    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
    

    Although, I've read about cases in which no serial number is returned using WMI. Another way to accomplish this would be through Platform Invocation Services (PInvoke).

    This article includes a download in which the author implements CreateFile() and DeviceIoControl() to extract drive information through Interop services in VB .NET.

    To use either of the above outlined methods you will need ADMIN rights, a utility which seems to circumvent this can be found here. If your feeling adventurous the C++/Win32 source code is available for you to peruse. (Check out the function 'ReadPhysicalDriveInNTWithZeroRights()')

    0 讨论(0)
  • 2020-12-20 04:43

    Here is the code to get HDD Serial Number

        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
    

    Hope it Helps.

    0 讨论(0)
提交回复
热议问题