怎样获取计算机硬盘号,如何获取硬盘序列号?

693ca416d91026cce4a00fe70bd931d5.png

在模块中加入下列声明:

Public Declare Function GetVolumeInformation Lib "kernel32" _

Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, _

ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, _

lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, _

lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, _

ByVal nFileSystemNameSize As Long) As Long

'得到某一磁盘分区的信息,如C:

窗体代码如下:

Option Explicit

Private Regid, Localid As Long

Private Sub CmdLocalID_Click()

'根据C盘序列号得到原ID

Dim Driver, VolName, Fsys As String

Dim volNumber, MCM, FSF As Long

Driver = "c:\"

Dim res As Long

res = GetVolumeInformation(Driver, VolName, 127, volNumber, MCM, FSF, Fsys, 127)

'volNumber是C盘序列号

Localid = volNumber / 2 + 123456789

Text1.Text = Localid

End Sub

Private Sub CmdRegID_Click()

'根据原ID算出注册ID

If IsNumeric(Text1.Text) Then

Regid = CLng(Text1.Text) / 4 * 3 + 987654321

Else

'error

End If

Text2.Text = Regid

End Sub

Private Sub CmndCheckID_Click()

'验证注册ID

Dim Driver, VolName, Fsys As String

Dim volNumber, MCM, FSF As Long

Driver = "c:\"

Dim res As Long

res = GetVolumeInformation(Driver, VolName, 127, volNumber, MCM, FSF, Fsys, 127)

Dim Tid As Long

Tid = volNumber / 2 + 123456789

If Regid = Tid / 4 * 3 + 987654321 Then

MsgBox "正确!"

Else

MsgBox "错误!"

End If

End Sub

为便于演示,我在窗体上用了两个文本框三个按钮,请根据情况灵活使用,可以在用户端算出原ID,发给你,你算出注册ID再发给用户,验证当然是在用户端啦。ID算法很简单,只作示范。此注册ID只能在这一台机器上使用,对于非高手用户来说是足够啦。

注:如用户格式化C:盘后需重新获得ID。

参考资料:网络大本营

0

回答者: lijinfeng042 - 四级  2008-12-12 22:23

◆◆

评论读取中....

请登录后再发表评论!

◆◆

修改失败,请稍后尝试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C/C++中获取计算机的硬盘序列号和显卡序列号是一个稍微复杂的任务,因为C/C++本身并没有提供直接的函数或API来获取这些信息。以下是一种可能的实现方式: 获取硬盘序列号: 在Windows系统上,你可以使用WMI接口来获取硬盘序列号。具体来说,可以使用`Win32_DiskDrive`类和`SerialNumber`属性来获取硬盘序列号。你可以使用C/C++调用WMI接口的方式来实现。 在Linux系统上,你可以通过读取设备文件`/dev/sd*`来获取硬盘序列号。具体来说,你可以打开设备文件,然后使用`HDIO_GET_IDENTITY` ioctl命令来获取硬盘的身份信息,其中包括序列号获取显卡序列号: 在Windows系统上,你可以使用WMI接口来获取显卡序列号。具体来说,可以使用`Win32_VideoController`类和`PNPDeviceID`属性来获取显卡的唯一标识符。同样,你可以通过C/C++调用WMI接口的方式来实现。 在Linux系统上,你可以通过读取显卡设备文件或者执行特定命令来获取显卡信息。具体的实现方式可能因为显卡类型和操作系统的差异而有所不同。你可以尝试使用命令行工具如`lspci`或者读取设备文件`/sys/class/drm/card*/device/uevent`来获取显卡信息。 请注意,以上提到的方法可能需要特权或系统级的操作,并且在不同的操作系统上实现方式可能有所差异。在实际应用中,建议先了解目标平台的相关文档和API,以确定最适合你的环境的方法来获取硬盘序列号和显卡序列号

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值