наткнулся в инете.
Код:
Как получить серийный номер тома жесткого диска?
21 авг 2001 (вторник), 10:03:09
Как получить серийный номер тома жесткого диска?
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;
Как изменить серийный номер диска?
Серийный номер записан в загрузочном секторе. Для FAT дисков - это 4 байта начинающиеся со смещения 0x27; для NTFS дисков - это 8 байт, начинающихся со смещения 0x48. Для изменения, т.е. в качестве редактора, вполне подойдет Diskprobe из Resource Kit.
Код:
Совет 215. Как прочитать серийный номер диска
Новая библиотека Microsoft Scripting Runtime содержит иерархию FileSystemObject, состоящую из нескольких объектов, которые позволяют получать информацию о дисках, папках и файлах. Например, вы можете получить серийный номер диска с помощью такого кода:
Листинг 1.
' получаем серийный номер диска c:
Dim fso As New Scripting.FileSystemObject
Dim dr As Scripting.Drive
' получаем ссылку к объекту Drive
Set dr = fso.GetDrive("c")
Print Hex$(dr.SerialNumber)
А используя свойство FreeSpace объекта Drive можно также проверить, достаточно ли у вас свободного места на диске:
Листинг 2.
Print "На диске C есть " & dr.FreeSpace & " свободных байт"
Более подробно об этом можно прочитать в Справке VB в разделах Dictionary и FileSystemObject.