гороскоп на сегодня у скорпиона любовный гороскоп совместимости любовный гороскоп на 2017 рак девушка подробнее на этой странице нажмите чтобы увидеть больше ссылка на подробности любовный гороскоп гороскоп совместимости совместимость знаков в любви любовный гороскоп любовный гороскоп гороскоп совместимости парень козерог девушка весы гороскоп совместимость гороскоп на месяц любовный рак гороскоп на след неделю девы любовный гороскоп женщина рыба мужчина весы совместимость гороскоп совместимости он телец она овен совместимость любовный увидеть больше гороскоп дева любовный на сегодня и завтра гороскоп основываясь на этих данных на этой странице гороскоп на совместимость телец и рыбы рак гороскоп весы стрелец совместимость на 2017 год гороскоп ссылка сегодня гороскоп совместимость по гороскопу женщина телец мужчина рак совместимость гороскоп секс гороскоп совместимости читать больше гороскоп любовный на сегодня козерогу гороскоп любовный на завтра для стрельца гороскоп любовный на месяц рыбы женщина совместимость гороскопа лев и овен нажмите для продолжения любовный гороскоп двух львов гороскоп неделю гороскоп стрелец женщина и весы мужчина совместимость в браке гороскоп совместимости весы жен овен муж подробнее на этой странице сексуальный гороскоп близнецы женщин гороскоп совместимости она водолей он телец основываясь на этих данных совместимость по гороскопу близнецы скорпион гороскоп совместимости рак и козерог на 2017 гороскоп козы на 2017 любовный гороскоп на завтра лев любовный женщина одинокая перейти увидеть больше совместимость по гороскопу рыба и дева гороскоп женщины любовный гороскоп скорпиона на 2017 год мужчина гороскоп пифагора совместимости знаков зодиака привожу ссылку любовный гороскоп на рыб сегодня по ссылке гороскоп таблица совместимости по годам сексуальный гороскоп водолея и овна любовный гороскоп на месяц для овнов гороскоп совместимости рыбы женщина и рак мужчина совместимость нажмите чтобы увидеть больше гороскоп совместимости по луне и солнцу вот ссылка гороскоп на совместимость женщина телец любовный гороскоп на месяц весы 2017 гороскоп дева телец совместимость совместимость гороскопов лев скорпион посетить страницу гороскоп совместимости знаков зодиаков таблица фото гороскоп совместимости рыба тигр любовный гороскоп женщина козерог 2017 любовный гороскоп козерог на сегодня женщина любовный гороскоп для девы на сегодня и завтра гороскоп стрелец на завтра женщина любовный составить любовный любовный гороскоп водолей на 2017 гороскоп совместимости по знакам зодиака овен и водолей

Форумы HiProg.com - MS ACCESS, VBA, VB

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

ник: k@s
2007 снЁс проверить нет возможности. Попробуй защиту при помощи серийного номера жесткого диска. Кстати я им пользуюсь давно , удобная штука особенного когда проги стоят за 3 тысячи км.
Защита от перезаписи.(от Сергея Литовского litovsky@vstu.unibel.by)

После завершения разработки приложения, разработчик, как правило, совершает "вояж" к заказчику и устанавливает программу на конкретном компьютере (компьютерах). Если у него при этом даже не возникает мысли о необходимости защиты своего труда от несанкционированного копирования и тиражирования (бывают "узкие" задачи, которые нужны только на конкретном месте), то будем считать, что ему повезло. Если у Вас такая же ситуация - кликните крестик в правом верхнем углу. А если, наоборот, Вы ложитесь спать и размышляете, как уберечь свой "плод бессонных ночей" от реальных (чаще - вымышленных) взломщиков - читайте дальше.

Так вот, первое, что приходит на ум поднаторевшему в формах и отчетах разработчику - "насмерть" прибить свое детище к тому компьютеру, на котором оно размещено. Чтобы работало оно только там, а тем умникам, которые его скопировали и пытаются запустить на другой машине - показывало фигу. Тут, как правило, приходится разобраться с некоторыми API-функциями. Например, привязаться к номеру жесткого диска.

Но, при этом, появляются другие трудности. В процессе эксплуатации пользователь начинает методично и бессовестно издеваться над программой, находя так называемые "ошибки" - не знает, гад, что это не наши ошибки, а его, кнопки в нужной последовательности нажимать не научился. Так вот, разработчик начинает эти ошибки исправлять и обновлять приложение у заказчика, учитывая все защитные механизмы. Понятно, что если заказчик находится в радиусе мобильной досягаемости, то нет проблем. А если он на другом конце света или Ваш радиус очень маленький. Или, например, он захотел жесткий диск поменять, а может и всю машину - что тогда? Ехать, "отрывать" и снова "прибивать".

Кроме того, развитие глобальной сети позволяет разработчику создавать и реализовывать программы не под конкретного заказчика, а в режиме "shareware". Пользователь скачивает программу, использует в течение установленного срока и, если понравилось - платит.

Все вышесказанное предполагает установки на базу соответствующей системы защиты. Ниже изложен принцип действия такой системы:

1. Разработчик свободно распространяет дистрибутив программы.

2. При установке на компьютере и первом запуске программа опрашивает компьютер и формирует уникальную контрольную сумму, которая называется "Регистрационный номер". При формировании этого номера можно ограничиться серийным номером диска, а можно пойти дальше (процессор, имя компьютера в сети, пользователь и т.д.). Далее программа осуществляет преобразование регистрационного номера (можно пофантазировать, XOR и т.д.) в "регистрационный ключ". "Регистрационный номер" предъявляется
пользователю, а в ответ пользователь должен ввести "регистрационный ключ", который программа сравнит со своим.

3. Пользователь должен связаться с разработчиком и сообщить
"регистрационный номер" программы.

4. Разработчик должен (запустив спец.процедуру регистрации) сообщить пользователю "регистрационный ключ".

5. Пользователь вводит "регистрационный ключ". Если он правильный, то программа запоминает его и при дальнейших запусках не опрашивает пользователя.

Такие системы уже вовсю применяются в западных продуктах (например, смотри, как регистрируется WinZip 7.0).

Некоторые мысли:

- Данная система не отрицает, а, наоборот, требует наличия всех остальных средств защиты: администрирование, шифрование и MDE-интерфейс.

- Если при формировании контрольной суммы учитывается много констант (напр., имя компьютера, имя пользователя, название процессора и т.д.), то при изменении одного из этих факторов программа вновь потребует зарегистрироваться. Надо учитывать этот фактор, чтобы дать возможность пользователю делать UPгрейт.

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

- Можно строить приложения, в которых будет Demo (с ограниченным набором функций) и Full-режим (после регистрации).

- Можно закладывать "временные бомбы", меняя "регистрационный ключ" при наступлении определенной даты. Это бывает необходимо, чтобы заставить пользователя рассчитаться.

- И т.д.

Теперь конкретная процедурная реализация данного метода, в которой регистрационный номер текущей версии приложения формируется на основании имени номера жесткого диска, на котором размещено приложение. Изучив функции API, можно усложнить формирование регистрационного номера, добавив, например, имя компьютера, идентификатора процессора, идентификатора продавца процессора, имя пользователя:

Option Compare Database
Option Explicit

'Функция доступа к серийному номеру жесткого диска
Private 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 Const MAX_FILENAME_LEN = 256


Public Function DriveSerial() As Long
'Считывает серийный номер носителя (диска, на котором размещена
программа)

'Определяет, на каком диске программа
Dim sDrv As String
sDrv = Left(CurrentDb.Name, 1)
'Считывает номер
Dim RetVal As Long
Dim str As String * MAX_FILENAME_LEN
Dim str2 As String * MAX_FILENAME_LEN
Dim a As Long
Dim b As Long
Call GetVolumeInformation(sDrv & ":\", str, MAX_FILENAME_LEN, RetVal, a,
b, str2, MAX_FILENAME_LEN)
DriveSerial = RetVal
End Function



Public Function Parol() As Long
'Формирует пароль (регистрационный номер программы)
Dim intLongParol As Double
'Формирует контрольную сумму. Здесь можно добавлять другие
'составляющие (имя пользователя и т.д.)
intLongParol = DriveSerial()

'Делает 8 цифр в числе. Желательно определить конкретное количество цифр
'если дальше будет использоваться XOR.
Do While True
Select Case intLongParol
Case Is > 99999999
intLongParol = intLongParol / 9
Case 1 To 10000000
intLongParol = intLongParol * 9
Case 10000000 To 99999999
Exit Do
Case Else
intLongParol = 45678912 'на всякий случай
End Select
Loop

Parol = intLongParol \ 1 'Делает целое число
End Function


Public Function Otzyv(lngParol) As Long
'Формирует отзыв (регистрационный ключ) по известному паролю (рег.
номеру)
'Данная функция должна быть и в приложении и отдельно у разработчика
'Она позволяет осуществить регистрацию программы
Dim strLongOtzyv As String, intLongOtzyv As Double
Dim PartStrLongOtzyv1 As String, PartStrLongOtzyv2 As String

intLongOtzyv = lngParol

'Значение, которое стоит после Xor, можно менять для
'каждой новой версии. Это позволит отмести незарегистрированные копии.
intLongOtzyv = intLongOtzyv Xor 123456789
strLongOtzyv = Trim(str(intLongOtzyv))
If Len(strLongOtzyv) > 7 Then 'ограничим размер ключа 7-ю цифрами
strLongOtzyv = Right(strLongOtzyv, 7)
End If

Otzyv = Val(strLongOtzyv)
End Function


Далее разработчик должен осуществить следующие действия:

- Разделить базу на интерфейс и данные, если не сделал это ранее.

- Создать модуль в интерфейсной части и разместить в нем вышеописанные процедуры.

- В одной из таблиц с данными создать поле "Ключ" для хранения регистрационного ключа.

- Создать "стартовую" форму и процедуру, которая: сформирует регистрационный номер (Public Function Parol()) и регистрационный ключ (Public Function Parol()); считает регистрационный ключ из поля "Ключ";
сравнить регистрационный ключ, рассчитанный программой и хранящийся в
поле;
в случае совпадения "пропустит" пользователя, не задавая лишних
вопросов;
в случае несовпадения (в том числе и в первый раз) предъявит пользователю регистрационный номер и потребует ввести регистрационный ключ. Если пользователь осуществляет правильный ввод, то запоминает ключ в поле "Ключ" и в дальнейшем не опрашивает. Если ключ неправильный - Quit.

- Данную процедуру можно вызывать не только из "стартовой" формы, но и при загрузке других основных объектов Вашего приложения - на случай, если кто-то обойдет параметры запуска при загрузке. Кстати, при грамотной установке защиты от Shift, которая обязательно требует администрирования, шифрования и MDE-интерфейса, все будет OK.


'Пример процедуры для "стартовой" формы
Dim dbfCurrentN As Database
Dim tdfCurrentN As TableDef
Dim rstCurrentN As Recordset
Set dbfCurrentN = CurrentDb
Set tdfCurrentN = dbfCurrentN.TableDefs("Таблица1") 'таблица с нужным
полем
Set rstCurrentN = tdfCurrentN.OpenRecordset
rstCurrentN.MoveFirst 'Отыскивает требуемую запись

If rstCurrentN.Fields("Ключ") <> Otzyv(Parol) Then
'Подготовка вопроса пользователю
Dim promptN As String, titleN As String
'Инициализирует строку.
promptN = "Для работы с программой необходимо осуществить " _
& "ее регистрацию. Регистрация осуществляется при первом " _
& "запуске программы и при изменении конфигурации " _
& "компьютера. Регистрационный номер данной копии программы: " _
& Eval(Parol) & ". Введите регистрационный " _
& "ключ, который необходимо получить у разработчика:"
titleN = "Регистрация программы"

'Проверка введенного пользователем значения.
Select Case InputBox(promptN, titleN)
Case Otzyv(Parol)
rstCurrentN.Edit 'Открывает запись для редактирования
rstCurrentN.Fields("Ключ") = Otzyv(Parol)
rstCurrentN.Update 'Сохраняет изменения
Case Else
rstCurrentN.Close 'Закрывает объект Recordset
MsgBox ("Введен неправильный регистрационный ключ")
DoCmd.Quit 'Выход из Microsoft Access.
End Select

End If

rstCurrentN.Close 'Закрывает объект Recordset


Ваше имя:

Пароль:

Цитировать: [quote][/quote] Код: [code][/code]
Жирный: [b][/b] Наклонный: [i][/i]
URL: [url][/url] 

Сообщение:

 Размер файла не более 50 Кбт. Большие файлы можно размещать на www.slil.ru

Прикрепить:

 

Для вставки смайлов в текст щелкните по значку.