Существует также вызов Win32 API, но я думаю, что WMI - лучший способ, так как он все еще является управляемым кодом.
Функция Win32 API: GetVolumeInformation
Я нашел следующую функцию в eggheadcafe (это C #, но это не должно быть проблемой в vb.net) для извлечения серийного номера:
public string GetVolumeSerial(string strDriveLetter)
{
uint serNum = 0;
uint maxCompLen = 0;
StringBuilder VolLabel = new StringBuilder(256); // Label
UInt32 VolFlags = new UInt32();
StringBuilder FSName = new StringBuilder(256); // File System Name
strDriveLetter+=":\\"; // fix up the passed-in drive letter for the API call
long Ret = GetVolumeInformation(strDriveLetter, VolLabel, (UInt32)VolLabel.Capacity, ref serNum, ref maxCompLen, ref VolFlags, FSName, (UInt32)FSName.Capacity);
return Convert.ToString(serNum);
}