function GetHDSerialNumber(Drv : String): String;
var
  VolumeSerialNumber : DWORD;
  MaximumComponentLength : DWORD;
  FileSystemFlags : DWORD;
begin
  if Drv[Length(Drv)] =':' then Drv := Drv + '\';
  GetVolumeInformation(pChar(Drv),
                       nil,
                       0,
                       @VolumeSerialNumber,
                       MaximumComponentLength,
                       FileSystemFlags,
                       nil,
                       0);
  Result := IntToHex(HiWord(VolumeSerialNumber), 4) +
            '-' +
            IntToHex(LoWord(VolumeSerialNumber), 4);
end;