Я хочу получить код VB.NET или VB для доступа к серийному номеру жесткого диска при запуске программы. Чтобы помочь мне защитить свое программное обеспечение от людей, которые пытаются пиратские копии.
Для защиты программного обеспечения путем доступа к серийному номеру жесткого диска
Ответы (5)
В 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
Если он вам все еще нужен, напишите мне на [email protected] или [email protected]. Я пришлю вам исходный код.
Ниже вы найдете точный ответ на свой вопрос:
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