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

Vb.net 通过访问硬盘序列号来保护软件,vb.net,security,licensing,hard-drive,Vb.net,Security,Licensing,Hard Drive,我想让VB.NET或VB代码在启动程序时访问硬盘序列号。这是为了帮助我保护自己的软件不受盗版者的攻击 人们通常需要升级/更换硬盘。 最好使用DMI的序列号。对不起,我不能提供代码,但我根据我以前在该地区的经验提供了一个警告 许多授权系统使用的“硬盘序列号”实际上是一个写在磁盘上的软数字,而不是硬连线到硬件中 使用“重影”软件快速生产许多台式机,或使用虚拟化软件快速生产许多服务器的企业通常具有相同的硬盘标识 因此,如果你的目标是防止企业购买一份拷贝并(可能是无意中)在许多机器上使用它,那就要小心了

我想让VB.NET或VB代码在启动程序时访问硬盘序列号。这是为了帮助我保护自己的软件不受盗版者的攻击

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

对不起,我不能提供代码,但我根据我以前在该地区的经验提供了一个警告

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

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

因此,如果你的目标是防止企业购买一份拷贝并(可能是无意中)在许多机器上使用它,那就要小心了。

在c#中,但你明白了。您将要使用System.Management进行此操作:

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

正如其他人所指出的,这可能不是处理这一问题的最佳方式。不过,这是你的事。

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

在VB6.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
子ShowDriveInfo(路径)
Dim fso、drv、bytesPerGB、freeGB、totalGB、s
s=“”
字节数PERGB=1024*1024*1024
设置fso=CreateObject(“Scripting.FileSystemObject”)
设置drv=fso.GetDrive(fso.GetDriveName(路径))
s=s&drv.Path&“-”
如果drv.已经准备好了,那么
freeGB=drv.FreeSpace/bytesPerGB
totalGB=drv.TotalSize/bytesPerGB
s=s&FormatNumber(免费GB,3)+“免费GB”
s=s&FormatNumber(总计GB,3)+“GB”
其他的
s=s&“未准备就绪”
如果结束
s=s&“
” document.write(s) 端接头

如果你还需要它,请在iranshahrinst@yahoo.com或masoodraji@aol.com. 我将向您发送源代码。

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

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
函数ShowDriveInfo(drvpath)
尺寸fso、d、s、t
设置fso=CreateObject(“Scripting.FileSystemObject”)
Set d=fso.GetDrive(fso.GetDriveName(fso.GetAbsolutePathName(drvpath)))
选择案例d.DriveType
案例0:t=“未知”
案例1:t=“可拆卸”
案例2:t=“固定”
案例3:t=“网络”
案例4:t=“CD-ROM”
案例5:t=“RAM磁盘”
结束选择
s=“Drive”和d.DriveLetter&“:-”和t
s=s&“
”和“SN:”&d.SerialNumber ShowDriveInfo=s 端函数
问题几乎是一样的。太苛刻了,查尔斯?我认为这是在请求帮助查找操作系统调用以获取此信息。