当前位置: 代码迷 >> PB >> 软件加密,获取硬盘序列号(注意:是物理不变序列号)不是盘符卷标号!该怎么处理
  详细解决方案

软件加密,获取硬盘序列号(注意:是物理不变序列号)不是盘符卷标号!该怎么处理

热度:186   发布时间:2016-04-29 09:27:44.0
软件加密,获取硬盘序列号(注意:是物理不变序列号)不是盘符卷标号!
请高手提供可用的DLL文件和申明调用函数,万分感谢,给分

------解决方案--------------------
VC程序设计
获取硬盘序列号代码

http://www.xiaozhou.net/cooldog/article.asp?id=91
------解决方案--------------------
关注 接分
------解决方案--------------------
获得硬盘序列号
--------------------------------------

//DISKS SERIAL NUMBER
Function Boolean GetVolumeInformationA( ref String ls_Rootpath, ref String ls_volumnename, & 
Ulong lul_VolumeNameSize, ref Ulong lul_VolumeSerialNumber, ref Ulong lul_MaximumComponentLength, & 
ref Ulong lul_FileSystemFlags, ref String ls_FileSystemNameBuffer, Ulong lul_FileSystemNameSize ) &
Library "Kernel32.dll" 

//script
String ls_Rootpath, ls_volumnename 
ls_Rootpath = "C:" // 指定要得到序列号的硬盘, 一般情况都是C盘,除非你能保证用户存在其它逻辑盘或物理盘 
ls_volumnename = Space(256) // 分配足够的空间,下同 
Ulong lul_VolumeNameSize 
lul_VolumeNameSize = 256 
Ulong lul_VolumeSerialNumber, lul_MaximumComponentLength, lul_FileSystemFlags 
lul_MaximumComponentLength = 256 
String ls_FileSystemNameBuffer 
ls_FileSystemNameBuffer = space(256) 
Ulong lul_FileSystemNameSize 
lul_FileSystemNameSize = 256 
beep(1) 
boolean lb_rtn 
lb_rtn = False 
lb_rtn = GetVolumeInformationA(ls_Rootpath, ls_volumnename, lul_VolumeNameSize, &
lul_VolumeSerialNumber, lul_MaximumComponentLength, lul_FileSystemFlags, &
ls_FileSystemNameBuffer, lul_FileSystemNameSize) 
if lb_rtn = true then 
MessageBox("函数调用成功!","硬盘序列号为:"+string(lul_volumeserialnumber)) 
else 
MessageBox("提示","函数调用失败!") 
end if

------解决方案--------------------
楼主已经说是要“硬盘物理序列号,而不是C盘符卷标号”(请pengbinhui注意),用GetVolumeInformationA函数只能取分区的卷标号,用DIR命令可以显示出来,如
C:\>dir *.
 驱动器 C 中的卷是 WinXP
 卷的序列号是 3C04-BE39

只不过是以十六进制方式显示的。
而GetVolumeInformation的声明如下,请注意数据类型
FUNCTION Long GetVolumeInformation(String lpRootPathName, REF String lpVolumeNameBuffer, Long nVolumeNameSize, REF Long lpVolumeSerialNumber, Long lpMaximumComponentLength, Long lpFileSystemFlags, REF String lpFileSystemNameBuffer, Long nFileSystemNameSize) LIBRARY "kernel32.dll"