通过访问硬盘序列号来保护软件

时间:2008-11-26 01:36:21

标签: vb.net security licensing hard-drive

我想在启动程序时获取VB.NET或VB代码来访问硬盘序列号。这是为了帮助我保护自己的软件免受那些试图盗版的人的侵害。

5 个答案:

答案 0 :(得分:7)

在c#中,你明白了。您将需要使用System.Management:

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

正如其他人所指出的,这可能不是解决这个问题的最好方法。但是,那是你的事。

答案 1 :(得分:3)

我不能为您提供代码,抱歉,但我根据我之前在该地区的经验提供了警告。

许多许可系统使用的“硬盘序列号”实际上是一个写在磁盘上的软编号,而不是硬连线到硬件中。

使用“鬼影”软件快速生产许多桌面计算机或虚拟化软件以快速生成许多服务器的企业通常具有相同的硬盘识别功能。

请注意,如果您的目标是阻止企业购买一份副本并在许多机器上使用它(可能是无意的)。

答案 2 :(得分:2)

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

答案 3 :(得分: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。我会发给你源代码。

答案 4 :(得分: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