您的位置:首页 > 其它

读取硬盘物理序列号

2006-02-02 10:15 417 查看

读取硬盘物理序列号

WINNT下实现的,WIN98下不行,网上搜索了一通,高人给出WIN98下的实现代码要用到汇编,还要取得Ring0级别的控制权,狂晕~~~偶毕业后就把汇编还给老师了,还是老老实实用C++代码吧。具体的C++和汇编源码可以在此找到:http://www.cz88.net/2004/7-7/235257.htm



读取硬盘物理序列号有什么用?用来对软件加密最好了,别告诉我你是用C盘的逻辑序列号来加密的,那个冬冬可是可以用程序改的。不过听说现在连硬盘的物理序列号也可以改,不知道怎么才能改呢,高人指点一下。这个程序主要是针对有序列号的IDE HDD而言, 对于没有序列号或SCSI HDD硬盘则无能为力,这是其局限性。

实现原理:

1、 CreateFile可以打开物理设备和串口等,使用CreateFile("\\\\.\\PHYSICALDRIVE0",…)打开硬盘,其中的0为0-255,视乎有几个硬盘了。

2、 使用DeviceIoControl函数对打开的设备进行通信,发送指定命令,根据返回的PSENDCMDOUTPARAMS结构,得到物理序列号和模型号,把物理序列号和模型号格式化为一定的格式输出。



顺便把各个逻辑驱动器的信息也读取一下,包括卷标,驱动器类型和逻辑序列号等。主要是用GetLogicalDriveStrings和GetVolumeInformation和GetDriveType几个API。图示是偶的机器上的结果。
程序:diskinfo.zip
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: