0 / 0 / 0
Регистрация: 07.03.2013
Сообщений: 327
1

Заблокировать программу после нескольких запусков

25.05.2013, 12:12. Показов 2869. Ответов 36
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как можно сделать так, чтобы, допустим, после десятого запуска, программа просила ввести пароль?
Ну или просто, поставить счетчик запусков программы)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.05.2013, 12:12
Ответы с готовыми решениями:

Пароль на программу и ограничение количества запусков
У меня возник такой вопрос: возможно ли поставить пароль на программу Delphi? а также ограничить...

Как заблокировать элемент массива после обращения
int main(прошу немножко подсказать) { Приветствую коллеги! Никак не найду ифу как...

Как заблокировать программу определенными серийными номерами
Здравствуйте всем! Написал программу на C#. Как заблокировать программу определенными серийными...

Заблокировать клавишу в форме(1) после правельного ответа в другой(2) и возвращение в неё (1) или в начальную
Сталкнулся собственно с той проблемой что описано выше.Нужна помощь с реализацией,играть->вопрос...

36
0 / 0 / 0
Регистрация: 07.03.2013
Сообщений: 327
29.05.2013, 08:25  [ТС] 21
Author24 — интернет-сервис помощи студентам
А как часто это условие будет выполняться?

Добавлено через 56 секунд
И получается ведь, если он перезапустит программу, то она будет работать, так как случайное число, уже поменяется.
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36578 / 20308 / 4218
Регистрация: 12.02.2012
Сообщений: 33,607
Записей в блоге: 13
29.05.2013, 10:46 22
Цитата Сообщение от arsen1101995 Посмотреть сообщение
И получается ведь, если он перезапустит программу, то она будет работать, так как случайное число, уже поменяется.
- так в другом месте зависнет... А можно не вешать, а ошибку генерировать (а лучше - разные ошибки).
0
6804 / 2831 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
29.05.2013, 13:36 23
Цитата Сообщение от Catstail Посмотреть сообщение
ошибку генерировать (а лучше - разные ошибки).
И юзер подумает - какая глючная и кривая программа, а программист просто криворукая бездарность!
Забросит эту поделку и пойдет искать нормальный аналог.
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36578 / 20308 / 4218
Регистрация: 12.02.2012
Сообщений: 33,607
Записей в блоге: 13
29.05.2013, 15:13 24
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Забросит эту поделку и пойдет искать нормальный аналог.
- нет. Программа (как пишет ТС) сдана и нормально работает. ТС опасается, что ему не заплатят и хочет подстраховаться. Если заказчики окажутся жлобами, программа сломается. Все логично.
0
0 / 0 / 0
Регистрация: 07.03.2013
Сообщений: 327
01.06.2013, 22:37  [ТС] 25
Catstail, да, правильно...Я даже больше скажу..Этот человек, верит в меня, но просто нужно подстраховаться)
0
6804 / 2831 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
02.06.2013, 08:30 26
В любом случае ошибки и глюки в программе оставляют плохой осадок. Да и какой в них смысл? Проще закрывать программу сразу после запуска, а ещё лучше удалять ( деинсталлировать) все файлы установленной программы после 10 дней использования. Естественно, новая копия должна или сразу отказаться устанавливаться на комп без регистрации или удаляться при первом же запуске с напоминанием об оплате.
0
0 / 0 / 0
Регистрация: 07.03.2013
Сообщений: 327
02.06.2013, 08:53  [ТС] 27
Оооо,
Pro_grammer, А как удалить после 10 дней и при этом, сделать так, чтобы новая не устанавливалась, пока не введешь пароль?
0
6804 / 2831 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
02.06.2013, 11:37 28
Цитата Сообщение от arsen1101995 Посмотреть сообщение
А как удалить после 10 дней
Код самоудаления + проверка триала на 10 дней + проверка регистрации
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Private Sub Delself()
'-----------создать bat-файл который удалит программу и себя ---------------
Open App.Path + "\Delself.bat" For Append As #1
Print #1, "@echo off"
Print #1, ":try"
Print #1, "del " + App.EXEName + ".exe"
Print #1, "If exist " + App.EXEName + ".exe GoTo try"
Print #1, "del %0" '
Close
'--------------------------------
Shell App.Path + "\Delself.bat", vbHide
End
End Sub
 
Private Sub Command1_Click()
serial$ = InputBox(" Введите серийный номер", " Ввод ключа ")
SaveSetting App.EXEName, "textboxes", "text1", serial$ ' "111-222-333-444" серийный номер для регистрации выданный эзеру
End Sub
 
Private Sub Form_Load()
KeyData$ = GetSetting(App.EXEName, "textboxes", "text1", "")
If KeyData$ = "111-222-333-444" Then ' Этот ключик должен совпасть с тем, что у юзера!
Exit Sub ' если программа зарегистрирована, то работаем!
End If
 
 If Len(KeyData$) < 3 Then ' Если это первый запуск,
 NowEnd = Now + 10         'то пишем дату окончания работы +10
   yyyymmdd& = CLng(Format$(Day(NowEnd), "00") & Format$(Month(NowEnd), "00") & Format$(Year(NowEnd), "0000"))
   SaveSetting App.EXEName, "textboxes", "text1", Str(yyyymmdd&)
   Else                    ' Если дата запуска больше чем дата окончания работы
     If Val(KeyData$) < CLng(Format$(Day(Now), "00") & Format$(Month(Now), "00") & Format$(Year(Now), "0000")) Then
       MsgBox "Срок истек" ' это для контроля работы, в программе можно не выводить
       Delself             ' то удаляем программу, а ключик останется в реестре
     End If
End If
 
End Sub
Если юзер не успел или не захотел зарегать программу в 10 дней, то она больше не запустится, даже после переустановки. Но вдруг юзер передумал и решил её зарегистрировать? Тогда зарегистрировать её можно будет только с помощью дополнительной программы-регистратора, которую надо выслать юзеру дополнительно. Код её простой
Visual Basic
1
2
3
Private Sub Form_Load()
SaveSetting App.EXEName, "textboxes", "text1", "111-222-333-444"
End Sub
Соответственно App.EXEName -тут или настоящее имя программы ( той, что надо регистрировать) или имя регистратора должно совпадать с вашей программой.
"111-222-333-444" рег номер может быть любым, главное, что бы он совпадал с тем, что был в программе при компиляции.
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36578 / 20308 / 4218
Регистрация: 12.02.2012
Сообщений: 33,607
Записей в блоге: 13
02.06.2013, 12:12 29
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Да и какой в них смысл?
- смысл - в отвлечении пользователя от простой мысли (Программа нуждается в регистрации!). Писать в реестр - дело неплохое, но встроенные средства VB пишут в фиксированный раздел реестра (а в него легко заглянуть глазом!). Есть и программы, которые мониторят запись в реестр. Если такую запустить при установке - все будет, как на ладони... А строки "111-222-333..." лучше кодировать (в теле EXE они смотрятся...) или весь экзешник сжимать (тоже вариант).
0
6804 / 2831 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
02.06.2013, 12:24 30
Catstail, вопросы комплексной защиты программы я не рассматриваю. Понятно, что эта мера исключительно от честных людей, которые не будут копаться в программе и реестре, а удаление программы подтолкнет их покупке полной версии.
Тогда как ошибки и глючность программы, даже если это адекватно будет сопоставлено с концом триального периода ( в чем я тоже сомневаюсь), всегда приводят к негативному суждению о продукте.
Я не навязываю свое мнение, просто делюсь неким негативным опытом.
1
Модератор
Эксперт функциональных языков программированияЭксперт Python
36578 / 20308 / 4218
Регистрация: 12.02.2012
Сообщений: 33,607
Записей в блоге: 13
02.06.2013, 12:39 31
Зачем защищаться от честных людей?
0
6804 / 2831 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
02.06.2013, 13:22 32
Цитата Сообщение от Catstail Посмотреть сообщение
Зачем защищаться от честных людей?
Это не защита( слишком всё просто), а скорее принуждение к покупке. Бывают честные, но жадные
0
Эксперт WindowsАвтор FAQ
17996 / 7697 / 892
Регистрация: 25.12.2011
Сообщений: 11,470
Записей в блоге: 16
02.06.2013, 23:42 33
Лучший ответ Сообщение было отмечено как решение

Решение

Эту часть лучше так (иначе не будет удалять, если в пути пробелы):

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub Delself()
'-----------создать bat-файл который удалит программу и себя ---------------
Open App.Path + "\Delself.bat" For Output As #1
Print #1, ":try"
Print #1, "del """ + App.EXEName + ".exe"""
Print #1, "If exist """ + App.EXEName + ".exe"" GoTo try"
Print #1, "del %0"
Close
'--------------------------------
Shell App.Path + "\Delself.bat", vbHide
End
End Sub
Или короче (без файла вообще):
Visual Basic
Private Sub Delself()
Dim f$: f = """" & App.Path & "\" & App.EXEName & ".exe"""
Shell "cmd /v:on /c (set f=" & f & "&for /l %l in (0,0,0) do if exist !f! (del /f/q !f!) else (exit))", 0
end
end sub
3
6804 / 2831 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
03.06.2013, 07:34 34
Цитата Сообщение от Dragokas Посмотреть сообщение
Shell "cmd /v:on /c (set f=" & f & "&for /l %l in (0,0,0) do if exist !f! (del /f/q !f!) else (exit))", 0
Это сильно сказано!
0
0 / 0 / 0
Регистрация: 07.03.2013
Сообщений: 327
03.06.2013, 22:37  [ТС] 35
да уж, все так сложно..
0
Эксперт WindowsАвтор FAQ
17996 / 7697 / 892
Регистрация: 25.12.2011
Сообщений: 11,470
Записей в блоге: 16
04.06.2013, 00:01 36
arsen1101995, да ты главное вручную это не перепечатывай

А так - будет работать, я проверял ))
0
0 / 0 / 0
Регистрация: 07.03.2013
Сообщений: 327
04.06.2013, 12:42  [ТС] 37
Dragokas, хорошо бы еще и понять, что для чего..
0
04.06.2013, 12:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.06.2013, 12:42
Помогаю со студенческими работами здесь

Запустить файл программой по умолчанию и заблокировать программу до его закрытия
Такой код: HANDLE h = ShellExecute(NULL, L&quot;open&quot;, path, L&quot;&quot;, L&quot;&quot;, SW_RESTORE);...

После 15 секунд нормальной работы система зависает, после нескольких перезагрузок вообще перестал загружаться
Доброго вечера! Сегодня утром столкнулся с такой проблемой. Включил компьютер, все нормально...

После загрузки BIOS черный экран с мигающим "_" в верхнем углу, но после нескольких перезагрузок ПК включается
После загрузки BIOS черный экран с мигающим &quot;_&quot; в верхнем углу, но после нескольких перезагрузок ПК...

Счетчик запусков
Существует функция: static int foo(int n){ return n &lt; 2 ? 1 : foo(n-1) + foo(n-2); }...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
37
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru