- 积分
- 215
- 明经币
- 个
- 注册时间
- 2003-12-16
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
请问版主和编程高手如何测算用户系统分区“卷序列号”
版主和各位编程高手:
为了制作一个注册板块的“机器码”,需要知道用户的操作系统所在驱动器的“卷序列号”,请问用那个 Win API 函数,如何写代码?方可测的用户的“卷序列号”,或还将有什么更简单的方法?
再细说一下,以 XP 系统为例,打开“命令提示符”,用命令“DIR /P”就可以看到一个形如“xxxx-xxxx”的由 16 进制字符和 “-”号组成的 9 个字节长的字符串,这就是我要寻找的“卷序列号”。比如说,我要写一个安装程序,安装程序展开一个注册对话框,显示一个“机器码”,为了达到“一机一号”的注册码,此机器码就由操作系统所在驱动器的“卷序列号”算出,如何写出测算(用 PascalScript 语言)该序列号的方法呢?
谢谢!
__________________________________________________________
我找到了用“VB”语言写的“WINAPI”的方法附在下面,那位高手能转换为“PascalScript 语言”。
……………………………………………………………………………………………………………………
函数名:DriveSerial
作者: mccad 上传时间:2003-4-27
Private Declare Function GetVolumeInformation& Lib "kernel32" _
Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, _
ByVal pVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, _
lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, _
lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, _
ByVal nFileSystemNameSize As Long)
Private Const MAX_FILENAME_LEN = 256
Public Function DriveSerial(ByVal sDrv As String) As Long
Dim RetVal As Long
Dim str As String * MAX_FILENAME_LEN
Dim str2 As String * MAX_FILENAME_LEN
Dim a As Long
Dim b As Long
GetVolumeInformation sDrv & "", str, MAX_FILENAME_LEN, RetVal, _
a, b, str2, MAX_FILENAME_LEN
DriveSerial = RetVal
End Function
功能:返回指定磁盘的序列号
语法:DriveSerial ( sDrv )
参数:sDrv:字符串,代表盘符
返回值:长整数,序列号
样例:
Dim ds As Long
ds = DriveSerial("C:") |
|