Serial number of Hard Disk or Hard Drive

前端 未结 5 2011
滥情空心
滥情空心 2020-12-14 12:30

At first it may seems it is very easy question and some body may be trying to give me advice to try Google, it may be so. But for me it is very hard I have try Google, Stack

5条回答
  •  执笔经年
    2020-12-14 13:17

    I took a look with ILSpy (http://ilspy.net/) to System.IO.DriveInfo class and I figured out this code that seems to work fine :

    '------------------------------------------------------
    ' Declaration found in Microsoft.Win32.Win32Native
    '------------------------------------------------------
    Friend Declare Auto Function GetVolumeInformation Lib "kernel32.dll" (drive As String,  volumeName As StringBuilder, volumeNameBufLen As Integer,  ByRef volSerialNumber As Integer,  ByRef maxFileNameLen As Integer,  ByRef fileSystemFlags As Integer,  fileSystemName As StringBuilder, fileSystemNameBufLen As Integer) As Boolean
    
    '------------------------------------------------------
    ' Test in my Form class
    '------------------------------------------------------
    Private Sub Button4_Click(sender As System.Object, e As System.EventArgs) Handles Button4.Click
        Try
            Dim volumeName As StringBuilder = New StringBuilder(50)
            Dim stringBuilder As StringBuilder = New StringBuilder(50)
            Dim volSerialNumber As Integer
            Dim maxFileNameLen As Integer
            Dim fileSystemFlags As Integer
            If Not GetVolumeInformation("C:\", volumeName, 50, volSerialNumber, maxFileNameLen, fileSystemFlags, stringBuilder, 50) Then
                Dim lastWin32Error As Integer = Marshal.GetLastWin32Error()
                MsgBox("Error number:" & lastWin32Error)
            Else
                MsgBox(volSerialNumber.ToString("X"))
            End If
    
        Catch ex As Exception
            MsgBox(ex.ToString())
        End Try
    End Sub
    

提交回复
热议问题