private static ulong GetSystemDriveSerialNumber() { char systemDriveLetter = Environment.SystemDirectory[0]; string numberAsHexString; using (var dsk = new ManagementObject(@"Win32_LogicalDisk.DeviceID=""" + systemDriveLetter + @":""")) { dsk.Get(); numberAsHexString = dsk["VolumeSerialNumber"].ToString(); } if (!HexString.IsMatch(numberAsHexString)) { throw new ArgumentException(string.Format("Serial number for volume {0} isn't a valid hexadecimal string ({1})", systemDriveLetter, numberAsHexString)); } return(Convert.ToUInt64(numberAsHexString, 16)); }