Для защиты программного обеспечения путем доступа к серийному номеру жесткого диска

Я хочу получить код VB.NET или VB для доступа к серийному номеру жесткого диска при запуске программы. Чтобы помочь мне защитить свое программное обеспечение от людей, которые пытаются пиратские копии.


person user40875    schedule 26.11.2008    source источник
comment
Этот вопрос почти такой же.   -  person Eduardo Campañó    schedule 26.11.2008
comment
Слишком суров, Чарльз? Я воспринял это как просьбу о помощи в поиске вызовов ОС для получения этой информации.   -  person Oddthinking    schedule 26.11.2008


Ответы (5)


В C #, но идею вы поняли. Для этого вам нужно использовать System.Management:

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

Как отмечали другие, это может быть не лучший способ справиться с этим. Однако это ваше дело.

person Jon B    schedule 26.11.2008

Я не могу предложить вам код, извините, но вместо этого я даю предупреждение, основанное на моем предыдущем опыте в этой области.

«Серийный номер жесткого диска», который использовался рядом систем лицензирования, на самом деле представляет собой программный номер, записанный на диск, а не зашитый аппаратно.

Предприятия, которые использовали «фантомное» программное обеспечение для быстрого выпуска большого количества настольных компьютеров или программное обеспечение виртуализации для быстрого выпуска большого количества серверов, часто имели идентичную идентификацию жесткого диска.

Так что будьте осторожны, если ваша цель - помешать предприятиям купить одну копию и использовать ее (возможно, непреднамеренно) на многих машинах.

person Oddthinking    schedule 26.11.2008

Люди часто нуждаются в обновлении / замене жесткого диска. Лучше использовать серийный номер из DMI.

person pixelbeat    schedule 26.11.2008

Фактически, я использовал серийный номер диска для защиты своих программ.

В 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]. Я пришлю вам исходный код.

person masood raji    schedule 12.03.2011

Ниже вы найдете точный ответ на свой вопрос:

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
person masood raji    schedule 12.03.2011