Своим опытом делится Олег Кулабухов:
Вот, посмотрите пример, в нем достается и еще кое-какая полезная информация.
procedure TForm1.Button1Click(Sender: TObject); var VolumeName, FileSystemName : array [0..MAX_PATH-1] of Char; VolumeSerialNo : DWord; MaxComponentLength, FileSystemFlags : Integer; begin GetVolumeInformation('C:\',VolumeName,MAX_PATH,@VolumeSerialNo, MaxComponentLength,FileSystemFlags, FileSystemName,MAX_PATH); Memo1.Lines.Add('VName = '+VolumeName); Memo1.Lines.Add('SerialNo = $'+IntToHex(VolumeSerialNo,8)); Memo1.Lines.Add('CompLen = '+IntToStr(MaxComponentLength)); Memo1.Lines.Add('Flags = $'+IntToHex(FileSystemFlags,4)); Memo1.Lines.Add('FSName = '+FileSystemName); end; |
NeNashev дополняет:
Тут делал защиту CD по этому самому номеру и столкнулся со следующим: под NT системами серийник CD возвращается с обратным порядком байт, нежели под 9х. То есть, если под 9х Вы считали $11223344, то под NT считаете $44332211...
А серийник дискеты - не меняется... Про тома винчестера не скажу, не прверял.
А вообще серийный номер устанавливается при форматировании, и складывается их текущей даты/времени и еще чего-то... [001860]