public static string? GetDriveSerialNumber()
{
var moSearcher = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");
foreach (var o in moSearcher.Get())
{
var wmiHd = (ManagementObject)o;
if(wmiHd==null)
{
continue;
}
if (wmiHd["SerialNumber"]==null)
{
myApi.LoggerOut(LogCode.LogWarn, "serial number is null");
continue;
}
var serialNumber = wmiHd["SerialNumber"].ToString();
if (string.IsNullOrEmpty(serialNumber))
{
continue;
}
return serialNumber;
}
return null;
}
In some machines it doesn't work. It looks like it returns null for virtual disks. Is it true? Any workaround?
Tried to install it in several servers with Windows Server 2019 x64. Worked fine in computers with physical storage. Didn't work with virtual disks.