[TC] получить серийный номер винчестера
Здравствуйте, уважаемые!
Хочу написать программку, определяющую так называемый серийный номер
системного диска. Нашел в интернет несколько примеров исходников, но к
сожалению, не разобрался в многочисленных функциях и вариантах. Можно ли
попроще выполнить эту задачу средствами pascal или delphi.
С уважением,
Грызунов Александр. Самара.
Приветствую всех.
Грызунов Александр пишет:
Тут проще воспользоваться функциями WinAPI: при помощи GetEnvironmentVariable
получить значение переменной окружения SystemDrive. Это будет буква системного
диска. Затем функцией GetVolumeInformation получить информацию о диске (в т.ч.
серийный номер).
На FreePascal это выглядит так (перевод сделан с предпочитаемого языка на pascal
чисто интуитивно, но все равно работает; все необходимые проверки на ошибки в
этом примере отсутствуют):
program VolumeSerial
uses windows;
const
varname : pChar = 'SystemDrive';
format: pChar = '%x';
var
drive, buffer: pChar;
serial :DWORD;
begin
GetMem (drive, MaxPathLen);
GetMem (buffer, 128);
GetEnvironmentVariable(varname,drive,MaxPathLen);
writeln ('System drive: ' , drive);
if GetVolumeInformation(drive,nil,0,@serial,nil,nil,nil,0) then
begin
{сделано исключительно для того,}
{чтобы показать номер в hex-формате}
wvsprintf(buffer,format,@ serial);
writeln ('Serial: ' , buffer);
end;
end.
Это должно быть откомпилировано как консольное приложение. Результат вывода можете
сравнить с выводом команды dir на соответствующем диске.
Успехов. Анатолий.