【发布时间】:2010-09-24 02:04:59
【问题描述】:
我想在启动程序时获取 VB.NET 或 VB 代码来访问硬盘序列号。这是为了帮助我保护我自己的软件免受试图盗版的人的侵害。
【问题讨论】:
-
This 问题差不多。
-
太苛刻了,查尔斯?我将此视为寻求帮助以查找操作系统调用以获取此信息。
标签: vb.net security licensing hard-drive
我想在启动程序时获取 VB.NET 或 VB 代码来访问硬盘序列号。这是为了帮助我保护我自己的软件免受试图盗版的人的侵害。
【问题讨论】:
标签: vb.net security licensing hard-drive
在 c# 中,但你明白了。您需要为此使用 System.Management:
string driveLetter = Environment.SystemDirectory.Substring(0, 2);
string sn = new System.Management.ManagementObject("Win32_LogicalDisk.DeviceID=\"" + driveLetter + "\"").GetPropertyValue("VolumeSerialNumber").ToString();
正如其他人指出的那样,这可能不是处理此问题的最佳方法。不过,那是你的事。
【讨论】:
抱歉,我无法向您提供代码,但我会根据我之前在该领域的经验提供警告。
许多许可系统使用的“硬盘序列号”实际上是写在磁盘上的软编号,而不是硬连线到硬件中。
使用“重影”软件快速生产许多台式机或使用虚拟化软件快速生产许多服务器的企业通常具有相同的硬盘驱动器标识。
因此,如果您的目标是防止企业购买一份副本并在多台机器上使用(可能是无意的),请注意。
【讨论】:
人们经常需要升级/更换他们的硬盘。 最好使用 DMI 中的序列号。
【讨论】:
事实上,我使用磁盘序列号来保护我的软件。
在 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 给我留言。我会把源代码发给你。
【讨论】:
请在下面找到您问题的确切答案:
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
【讨论】: