Как защитить дистрибутив установочной программы от её запуска с неоригинального накопителя.
В этой стате речь пойдёт о защите вашей программы от копирования (этот способ не является универсальным и дальше вы поймёте почему). Для этого нам потребуется лишь одна API функция - GetVolumeInformation, описание которой вы можете посмотреть в соответствующем разделе. Допустим, что у нас есть установочный файл какой - то программы и мы распространяем его на дискетах или компакт - диске, надо сделать так, чтобы, если программу скопируют на жёсткий диск, другую дискету или перепишут на CD-R диск она не запускалась (установочная программа). И сразу мы сталкиваемся с первой проблемой - установочной программой, ведь кто - то может её сделать, а кто - то нет. Предположим, что мы создали свою установочную программу (на самом деле это легко) и теперь создадим функцию для получения серийного номера диска:
Function GetSerialNumber(strDrive As String) As String Dim SerialNum As Long Dim res As Long Dim Temp1 As String Dim Temp2 As String Temp1 = String$(255, Chr$(0)) Temp2 = String$(255, Chr$(0)) res = GetVolumeInformation(strDrive, Temp1, Len(Temp1), SerialNum, 0, 0, Temp2, Len(Temp2)) GetSerialNumber = SerialNum End Function
Теперь только остаётся при загрузке программы проверить серийный номер диска с кторого запускается программа с серийным номером оригинальной дискеты на которую была скомпелирована программа. Вот и ещё одна проблема - для каждого диска вам прийдётся компилировать программу с заранее узнаным серийным номером этого диска. У этого способа защиты много недостатков, если вы знаете как исправить некоторые из них, напишите мне.