【问题标题】:To protect software by accessing harddisk serial no [closed]通过访问硬盘序列号来保护软件[关闭]
【发布时间】:2010-09-24 02:04:59
【问题描述】:

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

【问题讨论】:

  • This 问题差不多。
  • 太苛刻了,查尔斯?我将此视为寻求帮助以查找操作系统调用以获取此信息。

标签: vb.net security licensing hard-drive


【解决方案1】:

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

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

正如其他人指出的那样,这可能不是处理此问题的最佳方法。不过,那是你的事。

【讨论】:

    【解决方案2】:

    抱歉,我无法向您提供代码,但我会根据我之前在该领域的经验提供警告。

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

    使用“重影”软件快速生产许多台式机或使用虚拟化软件快速生产许多服务器的企业通常具有相同的硬盘驱动器标识。

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        在 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 给我留言。我会把源代码发给你。

        【讨论】:

          【解决方案5】:

          请在下面找到您问题的确切答案:

          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
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2020-07-15
            • 1970-01-01
            • 2010-10-15
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多