To get a drive serial number in C# and VB.NET you can use the following snippet.
Sample C#
public string GetDriveSerialNumber(string drive)
{
try
{
var driveSerialnumber = string.Empty;
var pathRoot = Path.GetPathRoot(drive);
if (pathRoot == null)
{
return driveSerialnumber;
}
var driveFixed = pathRoot.Replace("\\", "");
if (driveFixed.Length == 1)
{
driveFixed = driveFixed + ":";
}
var wmiQuery = string.Format("SELECT VolumeSerialNumber FROM Win32_LogicalDisk Where Name = '{0}'", driveFixed);
using (var driveSearcher = new ManagementObjectSearcher(wmiQuery))
{
using (var driveCollection = driveSearcher.Get())
{
foreach (var moItem in driveCollection.Cast<ManagementObject>())
{
driveSerialnumber = ConvertHelper.ToString(moItem["VolumeSerialNumber"]);
}
}
}
return driveSerialnumber;
}
catch (Exception ex)
{
//handle the error your way
return string.Empty;
}
}
Sample VB.NET
Public Function GetDriveSerialNumber(drive As String) As String
Try
Dim driveSerialnumber = String.Empty
Dim pathRoot = Path.GetPathRoot(drive)
If pathRoot Is Nothing Then
Return driveSerialnumber
End If
Dim driveFixed = pathRoot.Replace("\", "")
If driveFixed.Length = 1 Then
driveFixed = driveFixed + ":"
End If
Dim wmiQuery = String.Format("SELECT VolumeSerialNumber FROM Win32_LogicalDisk Where Name = '{0}'", driveFixed)
Using driveSearcher = New ManagementObjectSearcher(wmiQuery)
Using driveCollection = driveSearcher.Get()
For Each moItem As var In driveCollection.Cast(Of ManagementObject)()
driveSerialnumber = ConvertHelper.ToString(moItem("VolumeSerialNumber"))
Next
End Using
End Using
Return driveSerialnumber
Catch ex As Exception
'handle the error your way
Return String.Empty
End Try
End Function
RT @CodeSnippetsNET: How to get a drive serial number in .NET http://t.co/E6VtiDhYad #csharp #vb #dotnet #coding #code #dev