I am trying to get the serial number of the boot drive and I haven't figured out how to do it.
I do understand that the partition =\= hard drive but I'd like the serial of the boot partition.
This what I have so far:
var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia");
int i = 0;
foreach (ManagementObject wmi_HD in searcher.Get())
{
// get the hardware serial no.
if (wmi_HD["SerialNumber"] == null)
richTextBox1.Text += "None" + Environment.NewLine;
else
richTextBox1.Text += "Name: " + wmi_HD["Name"] + Environment.NewLine;
richTextBox1.Text += "SerialNumber: " + wmi_HD["SerialNumber"] + Environment.NewLine;
richTextBox1.Text += "MediaType: " + wmi_HD["MediaType"] + Environment.NewLine;
richTextBox1.Text += "Removable: " + wmi_HD["Removable"] + Environment.NewLine;
++i;
}
I have looked here:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa394346(v=vs.85).aspx#properties
To see if I could see if it was the boot drive and I don't see anything.
I'm getting nothing returned on anything but the SerialNumber, everything else is blank.
This is what I get on the above code:
Name:
SerialNumber: 5YZ01J34
MediaType:
Removable:
How do I get the serial number of the boot drive and also the information that is not showing above?
Thanks again!
Best Answer
Here you're talking about a drive (as it's bootable), not a disk. A drive is logical and represented by a letter (C, D....etc.), and a disk is physical and represented by a number (from 0 to N). In your example you used WMI and
Win32_PhysicalMedia
, which is wrong as this class is about disks, not drives.Here is what you want using P/Invoke:
Now, the same using WMI:
Note I've used Win32_LogicalDisk as we're talking about drives (named here logical disks).