利用磁盘的序列号进行软件加密

2008-04-09 04:41:41来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

  用过共享软件的人都知道,一般的共享软件(特别是国外的)在使用一段时间后都会提出一些“苛刻”的要求,如让您输入注册号等等。如果您想在软件中实现该“功能”的话,方法有很多。在这里我介绍一种我认为安全性比较高的一种,仅供参考。

  大家都知道,当您在命令行中键入“dir”指令后,系统都会读出一个称作Serial Number的十六进制数字。这个数字理论上有上亿种可能,而且很难同时找到两个序列号一样的硬盘。这就是我这种注册方法的理论依据,通过判断指定磁盘的序列号决定该机器的注册号。

  要实现该功能,如何获得指定磁盘的序列号是最关键的。在Windows中,有一个GetVolumeInformation的API函数,我们利用这个函数就可以实现。

  下面是实现该功能所需要的代码:

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
'Usage:
'Dim ds As Long
'ds = DriveSerial("C")
 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

  如果我们需要某个磁盘的序列号的话,只要DriverSerial(该磁盘的盘符)即可。如 DriverASerialNumber=DriverSerial("A")。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:用VB编写接近实际的抽奖程序

下一篇:截取部分文件的VB编程技巧