Страница: 1 |
Страница: 1 |
Вопрос: какие вы знаете модели лицензирования своей проги
Добавлено: 21.06.06 17:20
Автор вопроса: student-uni
Я решил сделать так
Юзер жмёт меню "Зарегистрироваться"
Прога посылает мне по емейл его Название фирмы или имя,
Имя компьютера, МАК адрес сетевухи, число пользователей.
Я эти четыре параметра склеиваю в одну текстовую строку,
например с разделителем знаком "?" между параметрами
шифрую каким нибудь шифрованием и получаю ключ типа
ЁКЛМН%оапврлкг534ыв длоув
Шлю ему этот ключ.
Он его вводит в окошко.
Прога сохраняет его допустим в реестре.
И прога имеет алгоритм дешифрации.
Она каждый раз при старте читает ключ из реестра,
если ключа там нет - пишет что версия не зарегистрирована.
Если ключ там есть - проверяет тот ли это компьютер по
названию и Мак адресу.
Если не тот - пишет что не зарегистрирована.
Если тот - пишет в Инфо для кого она зарегистрирована.
Вопрос
Оптимален ли такой подход в плане общего процесса ?
/достоинства недостатки/
Как бы вы сделали лицензирование ?
Спасибо
Ответы
Всего ответов: 11
Номер ответа: 1
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #1
Добавлено: 21.06.06 18:01
В НЕТ предусмотрен свой процесс лицензирования, достаточно устойчивый.. Там используется файл лицензии, с ключами, шифрованием и т.д.. для этого есть специальные классы..
К сожалению, не могу рассказать более подробно, т.к. никогда не делал этого, но достаточно часто встречал в инете инфу по этому поводу...
Номер ответа: 2
Автор ответа:
Серёга
ICQ: 262809473
Вопросов: 17
Ответов: 561
Web-сайт:
Профиль | | #2
Добавлено: 21.06.06 23:27
Вообще метод не плохой, но я делал это немного проще - читал серийный номер винчестера.
Код для VB6:
___________________
Public Declare Function GetVolumeInformation Lib "kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long
Public Function ProgramID() As String
GetVolumeInformation "C:\", VName, 255, Serial, 0, 0, FSName, 255
...
дальше крутим и вертим переменную Serial и получаем из неё строку ProgramID, которую юзер посылает нам.
...
ProgramID=...
End Sub
________________
Номер ответа: 3
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #3
Добавлено: 21.06.06 23:55
+1 к винту надёжнее...
хотя кому надо - дальше понятно...
СовЭт:
Берём пробегаемся по паролям юзверя, шифруем, эти карляки предлагаем отправить по мылу. На основе тех карляк дать серийник к проги
Это пример как делать ненужно
Номер ответа: 4
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #4
Добавлено: 22.06.06 02:09
мне тоже как то понадобился номер HDD.. к сожалению стандартных возможностей я не нашел во FW.. поэтому пришлось прибегнуть к API..
Держи то, что у меня получилось.. может пригодится..
Imports System.Runtime.InteropServices
Public Class Win32
#Region " API Declare "
<llImport("kernel32.dll", CharSet:=CharSet.Auto, SetLastError:=True)> _
Private Shared Function GetVolumeInformation(ByVal drive As String, _
ByVal volumeName As StringBuilder, _
ByVal volumeNameBufLen As Integer, _
<Out()> ByRef volSerialNumber As Integer, _
<Out()> ByRef maxFileNameLen As Integer, _
<Out()> ByRef fileSystemFlags As Integer, _
ByVal fileSystemName As StringBuilder, _
ByVal fileSystemNameBufLen As Integer) As Boolean
End Function
#End Region
Public Shared ReadOnly Property DriveSerialNumber(ByVal drive As String) As Integer
Get
Dim volumeName As New StringBuilder(256)
Dim volSerialNumber As Integer
Dim maxFileNameLen As Integer
Dim fileSystemFlags As Integer
Dim fileSystemName As New StringBuilder(256)
Dim result As Boolean = GetVolumeInformation(drive, volumeName, 256, volSerialNumber, _
maxFileNameLen, fileSystemFlags, fileSystemName, 256)
If (result) Then
Return volSerialNumber
Else
Return 0
End If
End Get
End Property
End Class
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim serialNumber As Int32 = Win32.DriveSerialNumber("C:\"
MessageBox.Show("Serial Number: " & serialNumber, "VolumeSerialNumber", _
MessageBoxButtons.OK, MessageBoxIcon.Information)
End Sub
End Class
Как пользоваться этим в .NET я тоже показал..
Номер ответа: 5
Автор ответа:
Sergey
ICQ: 283551900
Вопросов: 1
Ответов: 74
Профиль | | #5
Добавлено: 22.06.06 18:05
А если винт поменяет?
А если перехватить вызов GetVolumeInformation и вернуть что нужно?
Номер ответа: 6
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #6
Добавлено: 22.06.06 18:50
А если перехватить вызов GetVolumeInformation и вернуть что нужно?
А если бы у бабушки были яйца, то она была бы дедушкой!!!
С таким же успехом можно на любую поставленную задачу найти 1000 и 1 причину, по которой делать это не имеет смысла...
Если использовать фамилию и е-mail, то скажешь..
А если ОНА фамилию поменяет?
А если мыло изменится?
Номер ответа: 7
Автор ответа:
student-uni
Вопросов: 122
Ответов: 257
Профиль | | #7
Добавлено: 22.06.06 22:46
Друзья мои, речь не о том чтоб защитить от взлома на 99,9%
Речь о том, чтобы создать стандартное лицензирование присущее всем нормальным программам. Меня интересует, является ли приведенный мной механизм "через ж..." или он более менее похож на то как это делается в коммерческих продуктах.
Мысль про встроенное лицензирование во фреймворке мне например не была известна. По каким словам искать то ?
Номер ответа: 8
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #8
Добавлено: 22.06.06 22:51
System.ComponentModel.LicenseManager
System.ComponentModel.LicenseProvider
Номер ответа: 9
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #9
Добавлено: 23.06.06 19:18
student-uni
если что стоящее накопаешь по этой теме.. дай знать..
уж больно тема интересная...
Номер ответа: 10
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #10
Добавлено: 23.06.06 20:25
Разумней, имхо, привязываться к серийнику винды, так нормальным пользователям, заплатившим за винду, будет проще.
Номер ответа: 11
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #11
Добавлено: 01.07.06 03:12
Забываешь о корпоративных пользователях
А вообще способ лицензирования очень зависит от специфики приложения.