使用硬盘序列号保护软件

3

我希望能获取VB.NET或VB代码,在程序启动时访问硬盘序列号。这可以帮助我保护自己的软件,防止那些试图盗版的人。


这个问题几乎相同。 - Eduardo Campañó
1
太苛刻了,查尔斯?我理解为请求帮助找到获取此信息的操作系统调用。 - Oddthinking
5个回答

7

在C#中,但是你可以借鉴这个思路。你需要使用System.Management:

string driveLetter = Environment.SystemDirectory.Substring(0, 2);
string sn = new System.Management.ManagementObject("Win32_LogicalDisk.DeviceID=\"" + driveLetter + "\"").GetPropertyValue("VolumeSerialNumber").ToString();

正如其他人所指出的那样,这可能不是处理此事的最佳方式。然而,这是你的业务。


3
抱歉,我不能提供代码,但是根据我的经验,我可以提醒你一些相关领域的问题。曾经有许多授权系统使用的“硬盘序列号”实际上只是写在磁盘上的软编号,并没有被硬件硬连线。如果企业使用“ghosting”软件快速批量制造台式机或虚拟化软件快速批量制造服务器,则它们的硬盘识别号可能会相同。因此,如果你的目标是防止企业购买一份副本并(可能无意中)在多台机器上使用它,请注意这一点。

2

人们经常需要升级/更换硬盘。 最好使用DMI中的序列号。


1

事实上,我曾经使用磁盘序列号来保护我的软件。

在vb 6.0中,我们可以创建和使用FileSystemObject。它允许访问硬盘的序列号,以及其他几个功能:

  • 显示每个硬盘的已用和可用空间
  • 创建、删除、移动文件夹
  • 复制文件和文件夹
  • 打印文本文件
  • ...等等。

请注意,在编写代码和声明对象之前,您必须激活。

Project--> References --> Microsoft Scripting Runtime

以下代码提取了有关驱动器的一些信息,但您也可以提取驱动器的序列号。
Sub ShowDriveInfo(path)
    Dim fso, drv, bytesPerGB, freeGB, totalGB, s

    s = ""
    bytesPerGB = 1024 * 1024 * 1024

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set drv = fso.GetDrive(fso.GetDriveName(path))

    s = s & drv.Path & " - "

    if drv.IsReady Then
         freeGB = drv.FreeSpace / bytesPerGB
         totalGB = drv.TotalSize / bytesPerGB

         s = s & FormatNumber(freeGB, 3) + " GB free of "
         s = s & FormatNumber(totalGB, 3) + " GB"
    Else
         s = s & "Not Ready"
    End If
    s = s & "<br />"

    document.write (s)
End Sub

如果您仍需要它,请在iranshahrinst@yahoo.com或masoodraji@aol.com给我留言。我会发送源代码给您。

0
请查看下面关于您问题的确切答案:
Function ShowDriveInfo(drvpath)
   Dim fso, d, s, t
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set d = fso.GetDrive(fso.GetDriveName(fso.GetAbsolutePathName(drvpath)))
   Select Case d.DriveType
      Case 0: t = "Unknown"
      Case 1: t = "Removable"
      Case 2: t = "Fixed"
      Case 3: t = "Network"
      Case 4: t = "CD-ROM"
      Case 5: t = "RAM Disk"
   End Select
   s = "Drive " & d.DriveLetter & ": - " & t
   s = s & "<BR>" & "SN: " & d.SerialNumber
   ShowDriveInfo = s
End Function

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接