明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1286|回复: 0

请问版主和编程高手如何测算用户系统分区“卷序列号”

[复制链接]
发表于 2003-12-16 21:11:00 | 显示全部楼层 |阅读模式
请问版主和编程高手如何测算用户系统分区“卷序列号”

版主和各位编程高手:
    为了制作一个注册板块的“机器码”,需要知道用户的操作系统所在驱动器的“卷序列号”,请问用那个 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:")
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-28 12:31 , Processed in 0.172921 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表