Советы по Delphi


Как получить серийный номер тома жесткого диска?


Своим опытом делится Олег Кулабухов:

Вот, посмотрите пример, в нем достается и еще кое-какая полезная информация.

    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]



Содержание раздела