Torna al Thread
Imports System
Imports System.Management
Public Class Serial
Private Shared Function GetVolumeSerial() As [String]
Return GetVolumeSerial("C")
End Function
Private Shared Function GetMBSerial() As [String]
Dim serial As [String] = [String].Empty
Dim oQuery As New System.Management.ObjectQuery("select SerialNumber from Win32_BaseBoard")
Dim oSearcher As New ManagementObjectSearcher(oQuery)
Dim oReturnCollection As ManagementObjectCollection = oSearcher.[Get]()
For Each oReturn As ManagementObject In oReturnCollection
serial += oReturn("SerialNumber").ToString()
Next
Return serial
End Function
Private Shared Function GetVolumeSerial(driveLetter As String) As String
'Check for valid drive letter argument.
Dim validDriveLetters As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
If validDriveLetters.IndexOf(driveLetter) <> -1 Then
If driveLetter.Length = 1 Then
Dim disk As System.Management.ManagementObject = Nothing
disk = New System.Management.ManagementObject("Win32_LogicalDisk.DeviceID=""" + driveLetter + ":""")
'System.Management.PropertyData DiskProperty;
For Each diskProperty As System.Management.PropertyData In disk.Properties
If diskProperty.Name = "VolumeSerialNumber" Then
'Return the volume serial number.
Return diskProperty.Value.ToString()
End If
Next
End If
End If
Return Nothing
'Invalid drive letter.
End Function
''' <summary>
''' Fornisce la combinazione del seriale del disco c e il seriale della motherboard
''' </summary>
''' <returns></returns>
Public Shared Function GetIdMachine() As [String]
Return (Serial.GetVolumeSerial() + Serial.GetMBSerial()).Trim()
End Function
''' <summary>
''' Fornisce l'md5 della combinazione del seriale del disco c e il seriale della motherboard
''' </summary>
''' <returns></returns>
Public Shared Function GetMd5IdMachine() As [String]
Return GetMD5Hash(GetIdMachine())
End Function
Private Shared Function GetMD5Hash(input As String) As String
Dim x As New System.Security.Cryptography.MD5CryptoServiceProvider()
Dim bs As Byte() = System.Text.Encoding.UTF8.GetBytes(input)
bs = x.ComputeHash(bs)
Dim s As New System.Text.StringBuilder()
For Each b As Byte In bs
s.Append(b.ToString("x2").ToLower())
Next
Dim password As String = s.ToString()
Return password
End Function
End Class