获取硬盘序列号(200分)

  • 主题发起人 主题发起人 chinahawk
  • 开始时间 开始时间
C

chinahawk

Unregistered / Unconfirmed
GUEST, unregistred user!
本人要实现软件的注册,需要获取硬盘或主版的出厂序列号,如何在D4中实现,
请大家指点,最好有例子!
 
orry,ctrl+A了,再来一次.

发信人: strayli (stray), 信区: Delphi 标 题: Re: 如何获取硬盘的ID
发信站: BBS 水木清华站 (Sun Oct 11 17:10:51 1998) 【 在 zangwill (皓月风飞) 的大作中提到: 】 :
: 每一个硬盘都有一个序列好,如何获取硬盘的ID : 哪位仁兄知道,请不吝赐教。谢谢!
function GetHDSerialNumber(Drv : String): String; var
VolumeSerialNumber : DWORD; MaximumComponentLength : DWORD;
FileSystemFlags : DWORD; begin
if Drv[Length(Drv)] =':' then Drv := Drv + '/';
GetVolumeInformation(pChar(Drv), nil,
0, @VolumeSerialNumber,
MaximumComponentLength,
FileSystemFlags, VolumeSerialNumber : DWORD;
MaximumComponentLength : DWORD; FileSystemFlags : DWORD; begin
if Drv[Length(Drv)] =':' then Drv := Drv + '/';
GetVolumeInformation(pChar(Drv), nil,
0, @VolumeSerialNumber,
MaximumComponentLength,
nil,SystemFlags, 0);
Result := IntToHex(HiWord(VolumeSerialNumber), 4) + '-' +
IntToHex(LoWord(VolumeSerialNumber), 4); end;
------From http://www.gislab.ecnu.edu.cn/delphibbs/
-- ※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 202.38.69.165
 
用“硬盘 序列号”检索一下
http://member.netease.com/~dingkai
自己改成Delphi的,不过 温柔一刀 已经改好 :-)
 
我也来一段,分加给我吧!
type
MIDPtr = ^MIDRec;
MIDRec = Record
InfoLevel: word;
SerialNum: LongInt;
VolLabel: Packed Array [0..10] of Char;
FileSysType: Packed Array [0..7] of Char;
end;

function GetDriveSerialNum(MID: MIDPtr; drive: Word): Boolean; assembler;
asm
push DS { Just for safety, I dont think its really needed }
mov ax,440Dh { Function Get Media ID }
mov bx,drive { drive no (0-Default, 1-A ...) }
mov cx,0866h { category and minor code }
lds dx,MID { Load pointeraddr. }
call DOS3Call { Supposed to be faster than INT 21H }
jc @@err
mov al,1 { No carry so return TRUE }
jmp @@ok
@@err:
mov al,0 { Carry set so return FALSE }
@@ok:
pop DS { Restore DS, were not supposed to change it }
end;

procedure TForm1.NrBtnClick(Sender: TObject);
var
Info: MIDRec;
begin
Info.InfoLevel:=0; { Information Level }
If GetDriveSerialNum(@Info,0) then { Do something with it... }
ListBox.Items.Add(IntToStr(Info.SerialNum)+' '+Info.VolLabel);
end;
////////////////////////////////////////////////////
BOOL GetVolumeInformation(

LPCTSTR lpRootPathName, // address of root directory of the file system
LPTSTR lpVolumeNameBuffer, // address of name of the volume
DWORD nVolumeNameSize, // length of lpVolumeNameBuffer
LPDWORD lpVolumeSerialNumber, // address of volume serial number
LPDWORD lpMaximumComponentLength, // address of system's maximum filename length
LPDWORD lpFileSystemFlags, // address of file system flags
LPTSTR lpFileSystemNameBuffer, // address of name of file system
DWORD nFileSystemNameSize // length of lpFileSystemNameBuffer
);
 
http://www.delphibbs.com/delphibbs/DispQ.asp?LID=267711
 
我先试一试,然后在分分!
不要着急!
 
qdshen
主要有以下两个错误,请改正后调试通,然后我给你发分。
lds dx,MID 行有以下错误
invialid combination of opcode and operands
call dos3call 行有以下错误
undeclared identifier:'dos3call'

LawrenceZhang
GetVolumeInformation这个API应该还可以获取其他信息,
如何设置参数,可以一并给我列出来吗?拜托!
Email:chinahawk@chinaren.com
 
我听说有些硬盘无序列号,如三星的 32543A,那我该怎么做,微机中哪个标识是唯一且一定存在的?
我该如何取得,请指教!
 
函数: GetHardDiskKey 得到硬盘序列号

function GetHardDiskKey:string;
var
pdw : pDWord;
mc, fl : dword;
begin
New(pdw);
GetVolumeInformation(pchar('C:/'),nil,0,pdw,mc,fl,nil,0);
result := inttostr(pdw^);
dispose(pdw);
end;
 
来自:chinahawk 时间:00-9-15 8:19:58 ID:336872
我听说有些硬盘无序列号,如三星的 32543A,那我该怎么做,微机中哪个标识是唯一且一定存在的?
我该如何取得,请指

=========取网卡的地址,一定唯一
 
网卡不一定都有,硬盘可是谁都有的,呵呵
 
jun的方法应该没错
 
错了,GetVolumeInformation读的是逻辑盘的序列号,不一定是硬盘真正的序列号
,哪位大虾知道真正硬盘序列号的读法,请指教!!!另外我了解到ROM取的F000:000
到F000:FFFF区的信息是不变的,有谁知道读ROM区的方法,及ROM区相应位置的
信息一并请指教,多谢!!!我可以加分!!!吐血了!!!
 
难道我说的不对码?
API只能获得逻辑驱动器的序列号,并不是真正的硬盘序列号,难道就没有办法在
95或98环境下实现码?
大虾们是不屑于回答还是不会????
 
http://www.delphibbs.com/delphibbs/dispq.asp?LID=339210
 
硬盘序列号我取过

用 操作端口的方式 发送查询请求 ,又取回设备描述,其中包含真正的DISK ID;
和 HWINFO 等测试软件结果相同. 不过只能在 Win98下取 . 在2000 or NT 下要
通过一个设备驱动才能允许访问.
 
GGCAT你是怎么取得的??
 
GGCAT能否也告诉我?(tiansan@sina.com)
 
算了,温柔一刀 给的URL 有资料,虽然罗嗦点,也还可以,大家自己看.
 
to GGCAT:
>>“罗嗦点”,
因为不是我写的,我写的会更罗嗦,哈哈哈...
另外,NT下面不需要特殊设备驱动程序也可以读硬盘序列号。

to chinahawk:
我给你的那个贴子后面有delphi程序呀!
 

Similar threads

回复
0
查看
588
不得闲
回复
0
查看
699
不得闲
回复
0
查看
795
不得闲
后退
顶部