Use WMI: Include the System.Management assembly:
{
ManagementObjectSearcher mosDisks = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");
foreach (ManagementObject moDisk in mosDisks.Get())
{
ShowWMIObject("Type: " , moDisk["MediaType"]);
ShowWMIObject("Model: " , moDisk["Model"]);
ShowWMIObject("Serial: " , moDisk["SerialNumber"]);
ShowWMIObject("Interface: " , moDisk["InterfaceType"]);
ShowWMIObject("Capacity: " , moDisk["Size"]);
ShowWMIObject("Partitions: " , moDisk["Partitions"]);
ShowWMIObject("Signature: " , moDisk["Signature"]);
ShowWMIObject("Firmware: " , moDisk["FirmwareRevision"]);
ShowWMIObject("Cylinders: " , moDisk["TotalCylinders"]);
ShowWMIObject("Sectors: " , moDisk["TotalSectors"]);
ShowWMIObject("Heads: " , moDisk["TotalHeads"]);
ShowWMIObject("Tracks: " , moDisk["TotalTracks"]);
ShowWMIObject("Bytes per Sector: " , moDisk["BytesPerSector"]);
ShowWMIObject("Sectors per Track: " , moDisk["SectorsPerTrack"]);
ShowWMIObject("Tracks per Cylinder: " , moDisk["TracksPerCylinder"]);
}
}
private void ShowWMIObject(string p, object o)
{
if (o != null)
{
Console.WriteLine("{0}{1}", p, o);
}
}