Expiring Today—Celebrate National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
Solved

HDD serial number

Posted on 2001-08-17
Medium Priority
346 Views
How do I obtain the serial number of the PC's hard disk, or any other number/string which is unique to that particlar machine?
0
Question by:nuttyprofessor
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
• 4

LVL 3

Expert Comment

ID: 6396755
Function GetDiskSerialNumber(DriveLatter:String) : DWord;
Var
a,b : Integer;
buffer : array[0..255] of char;
B1 : PChar;
SerialNumber : Dword;
Begin
New(B1);
B1 := StrPCopy(B1, DriveLatter + ':\');
GetVolumeInformation(B1, Buffer,
sizeof(buffer),@SerialNumber,a,b,nil,0);
Result := SerialNumber;
Dispose(B1);
End;

This should do it!

VSF
www.victory.hpg.com.br
0

LVL 3

Expert Comment

ID: 6396801
You can also use some BIOS information as unique keys!
To get the BIOS info use one of the following functions:

//FUNCTION TO GET COMPLETE BIOS INFO AS TEXT
function GetBiosInfoAsText: string;
var
p, q: pchar;
begin
q := nil;
p := PChar(Ptr(\$FE000));
repeat
if q <> nil then begin
if not (p^ in [#10, #13, ' '..'~' , '?' , '?' ]) then begin
if (p^ = #0) and (p - q >= 8) then begin
Result := Result + TrimRight(String(q)) + #13#10;
end;
q := nil;
end;
end else
if p^ in ['!'..'~' , '?' , '?' ] then
q := p;
inc(p);
until p > PChar(Ptr(\$FFFFF));
Result := TrimRight(Result);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
memo1.Lines.text:=GetBiosInfoAsText;
end;

//SIMPLE CODE TO GET ONLY THE BIOS DATE
procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.text:=String(PChar(Ptr(\$FFFF5)));
end;

Hope this helps!
VSF
www.victory.hpg.com.br
0

LVL 3

Accepted Solution

VSF earned 200 total points
ID: 6396824
Here is a more complete and easy to use function to get HDD serial number:

function GetVolumeID(DriveChar: Char): String;
var
MaxFileNameLength, VolFlags, SerNum: DWord;
begin
if GetVolumeInformation(PChar(DriveChar + ':\'), nil, 0,
@SerNum, MaxFileNameLength, VolFlags, nil, 0)
then
begin
Result := IntToHex(SerNum,8);
Insert('-', Result, 5);
end
else
Result := '';
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.text:=GetVolumeID(extractfilepath(application.exename)[1]);    //This will return the drive where the program is runnig into (Note: it may not be the C drive!)
end;

This should do it!
VSF
www.victory.hpg.com.br
0

LVL 22

Expert Comment

ID: 6396830
Hello

This is the Volume serial for partition "c", no not the hard diks serial number, so every time you format this partition it will change, even there are some utilities could change the Volume number, or you can change it also from code, so this way it will not be good if you want to do that for software protection

Getting the BIOS serial number
http://www.latiumsoftware.com/en/delphi/00050.php3

Best regards
Mohammed Nasman

0

LVL 3

Expert Comment

ID: 6398346

www.victory.hpg.com.br
www.enge.cjb.net

VSF
UIN:14016999
0

Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Creating an auto free TStringList The TStringList is a basic and frequently used object in Delphi. On many occasions, you may want to create a temporary list, process some items in the list and be done with the list. In such cases, you have to…
Hello everybody This Article will show you how to validate number with TEdit control, What's the TEdit control? TEdit is a standard Windows edit control on a form, it allows to user to write, read and copy/paste single line of text. Usua…
This tutorial will teach you the special effect of super speed similar to the fictional character Wally West aka "The Flash" After Shake : http://www.videocopilot.net/presets/after_shake/ All lightning effects with instructions : http://www.mediaf…
In this video you will find out how to export Office 365 mailboxes using the built in eDiscovery tool. Bear in mind that although this method might be useful in some cases, using PST files as Office 365 backup is troublesome in a long run (more on t…
Suggested Courses
Course of the Month11 days, 6 hours left to enroll