请问:如何获取主板的唯一标识?(100分)

  • 主题发起人 主题发起人 hegyi
  • 开始时间 开始时间
H

hegyi

Unregistered / Unconfirmed
GUEST, unregistred user!
我在编程时需要获取主版的唯一标识号,找过很多资料也问过很多人,结果还是在“不知道”。
我曾在一编文章中看到如下语句:
FSerial := String(Pchar(Ptr($FEC71)));
一试,不成!
不知道哪位高手能告诉我?
 
好像老帖里有。
 
还不如获取cpu序列号或者硬盘厂商序列号(不是GetvolumInfo)
获取主板序列号的方法大都在win2k下不能用或者很麻烦,需要vxd什么
http://www.8421.org/download.php?id=145
 
谢谢楼上的亲兄弟。
但我想要主版标识号,怎么办呢?
 
用第三方控件吧,2000下很麻烦的!!
 
我这里收藏一个,看了一下,也是直接读取硬件端口的,估计2000下没戏。
uses SHA1, Base64;

function GetHashedBiosInfo: string;
var
SHA1Context: TSHA1Context;
SHA1Digest: TSHA1Digest;
begin
// Get the BIOS data
SetString(Result, PChar(Ptr($F0000)), $10000);
// Hash the string
SHA1Init(SHA1Context);
SHA1Update(SHA1Context, PChar(Result), Length(Result));
SHA1Final(SHA1Context, SHA1Digest);
SetString(Result, PChar(@SHA1Digest), sizeof(SHA1Digest));
// Return the hash string encoded in printable characters
Result := B64Encode(Result);
end;


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, #32..#126, #169, #184]) 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 [#33..#126, #169, #184] then
q := p;
inc(p);
until p > PChar(Ptr($FFFFF));
Result := TrimRight(Result);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Memo1.Lines.Text := GetBiosInfoAsText;
end;
 
用硬盘的也行啊硬盘的也是唯一的但听说长城硬盘没号三星有一款出厂号一样
2000下不允许直接读取地址
 
用BIOS号来识别,有第三方控件。
 
to yzhshi:
你的这个控件在哪儿有?

to:lovedp:
哪儿有第三方控件,告诉我下载地址好吗?

to All:
我想知道实现原理,也好多学点东西,请告诉我实现方法,我
去试一下。谁有实现的示例代码更好,请发我一份,我的邮箱是:
Hegyi@21cn.com
先谢了。
 
我有一份能夠测网卡 MAC Address、BIOS 名稱、BIOS 版本、電腦名稱。
我没仔细看,不过在2000下可能没戏。你要的话,我发给你。
 
控件msysinfo76可获得主板信息
 
http://delphi.mychangshu.com/downfile.asp?ID=1076
 
后退
顶部