Доброго времени суток, Посетитель!
|
|
|
|
|
|
|
|
|
вид форума:
|
|
|
|
| Собственно предыстория вопроса.
Когда я пришел работать на фирму (вернее меня пригласили), дела на этой фирме шли не оч хорошо. Нужно было организовать работу огромного коллектива, а как это сделать, не знали.
Мной было предпринято ряд шагов, в том числе и разработка программы, где все бы могли работать и видеть, где, что, когда и куда...
До моего прихода, все бегали с тетрадками, перекидывали их со стола на стол, делали там записи, теряли их, всем офисом искали...короче полный дурдом.
Посмотрел я на все это, ужаснулся и стал разрабатывать программу, в которой учитывались и логистика, и обработка заказов, и курьерские поездки, и отслеживание звонков и еще куча всего
Прошло 1,5 года. Реально обороты фирмы возросли на 300% благодаря слаженности в работе.
Программа получилась достаточно работоспособной и полезной. Но с какого-то времени я стал замечать, что директор косится в мою сторону. Жаба душит его денежку платить (хотя, по нынешним меркам, не такие уж и большие, всего то 1,5тыщи...)
и вот подумалось мне, ежели придется уходить, не хотелось бы оставлять свой труд чужому дяде
короче, нужна мина, которая бы в мое отсутвие сработала бы
Мне не нужно, чтобы отформатировался диск на сервере, достаточно, чтобы перестала работать моя программа
есть у кого какие нибудь мысли по этому поводу, как можно это сделать?
по структуре программы - в момент загрузки появляется форма, где каждый юзер выбирает свою фамилию и работает. Это не разграничение прав (у всех права одинаковые), просто формируя в программе те или иные записи, они формируются под фамилией, которая выбрана в момент загрузки первой формы (потом эта форма висит на компе и не закрывается)
может сделать проверку на условия есть ли вообще моя фамилия в списке?
и если её нет, то.... | |
|
| |
|
|
|
| "не хотелось бы оставлять свой труд чужому дяде"
IMHO, за все что Вы сделали Вам уже заплатили, раз вы соглашались работать за ту ЗП которую Вам платили - значит Вас устраивало, что ваш труд покупают по такой цене.
Т.е. Все что Вы сделали принадлежит работодателю, поскольку Вы это сделали за ЗП.
Сделать закладку можно - но это незаконно и по закону наказуемо | |
|
| |
|
|
|
| osmor, я понимаю о чем вы говорите
с другой стороны, если бы я для выполнения поставленных задач принес из дома раскладушку и поселился бы на работе (кстати, это почти так и было, жена уже начала на меня давить, что я до ночи на работе, а ночью тоже работаю, но дома...), так вот - раскладушка тоже бы стала принадлежать директору?
передо мной была поставлена одна задача - разрулить ситуацию на фирме. Как это я буду делать - никого не волновало
еще полгода назад директор бежал мне навтречу и долго тряс руку, приговаривая - "Ну ты...если б не ты, я б разорился, Ну просто нет слов как я благодарен" и т.п.
Кстати, программа сама по себе это только один из инструментов по наведению порядка на фирме
теперь она почти закончена, все на фирме стало на рельсы
и у меня возникает ощущение, что я больше не нужен
вот я о чем говорю
есть руководители, которые держаться своих специалистов, есть, которые говорят - А я никого насильно не держу" | |
|
| |
|
|
|
| Да я вас тоже понимаю, думаете меня такие мысли не посещали? Неоднократно.
у там ниже уже написал... Предположим что Ваша закладка сработала... я вижу несколько путей развития:
1-й
Те кто остались, проклиная Вас, перепишут все заново, а пока народ будет бегать с бумажками.
2-й
Вас вечером встретят "серьезные" ребята и "попросят" поправить
3-й
К вам придут и позовут обратно работать. Пойдете? Думаете Вы сможете там работать?
Какое к Вам будет отношение?
4-й
Руководство фирмы подаст на вас иск за причинение ущерба - и выиграет его.
5-й
Никто не догадается что "сбой" связан с вашим увольнением, и оставшиеся с матюгами в авральном режиме будут чинить программу. | |
|
| |
|
|
|
| не..никто не придет, тем более вечером
исключено
да и необязательно ей "ломаться" сразу после моего ухода...пару-тройку месяцев может поработать
просто я тут читал на форуме о средставх защиты, много копий было сломано
имхо, мой метод самый простой и действенный | |
|
| |
|
|
|
| исходники с собой унесете? Если - да, то и закладка не нужна. | |
|
| |
|
|
|
| "просто формируя в программе те или иные записи, они формируются под фамилией"
А что сейчас уволившиеся работники удаляются из списка?
Как тогда быть с записями которые они создали? Есть какой-то механизм удаления? | |
|
| |
|
|
|
| а вы жлоб, батенька
я всюду, куда приходил, видел бегающих людей с тетрадками. вначале. затем создавали систему с напарником. насмену тетрадкам приходила СИСТЕМА.
я каждый раз прощался с созданной нами ОТКРЫТОЙ системой, потому что уверен в том, что на следующем рабочем месте создам что-то новое и особенное, а на моем старом коде пусть учатся студенты, что идут за мной...
так вот, к чему это я, вы на новом месте только проиграете, если оставите "мину замедленного действия" на прошлой работе... слыхали о звонках новых работодателей на старую работу в надежде разузнать о новом работнике что-нибудь?
рискуете не найти новую хорошую работу с таким подходом ;)
я бы (как всегда и делал в таких случаях) откровенно поговорил бы с начальником о ЗП или о том, почему он так на вас смотрит. может он завидует вам, что вы такой монстр? ;)
все недоразумения из-за недосказанностей и надуманностей, поверьте.
все, конечно же, с моей колокольни, но я бы не стал защищать свой код, а еще бы, после увольнения, заключил бы договор сопровождения своей системы с хорошими для меня условиями ;)) | |
|
| |
|
|
|
|
заключил бы договор сопровождения своей системы с хорошими для меня условиями ;))
|
это мысль
по поводу з/п - она меня вобщем устраивает
не устраивает одно, могут просто сказать - а вы нам больше не нужны | |
|
| |
|
|
|
| не устраивает одно, могут просто сказать - а вы нам больше не нужны
Еще не известно кто в этом случае проиграет
Ну рассмотрим вариант что Вы заложили мину,вас уволили, мина сработала, они пришли к Вам и предложили вернуться... Вы вернетесь? | |
|
| |
|
|
|
| вернуться может и не вернусь, а вот на счет того, что сказал Силыч - по поводу сопровождения, почему бы нет
а без мины программа работает себе и работает, чего ее сопровождать? | |
|
| |
|
|
|
| и потом - я не программист..и никогда им не был
за акксесс я сел 1,5 года назад
начал с книг, с Борея... | |
|
| |
|
|
|
| рекомендую вариант договора на сопровождение
работает ;) проверено на себе | |
|
| |
|
|
|
| >>по поводу з/п - она меня вобщем устраивает
>>не устраивает одно, могут просто сказать - а вы нам больше не нужны
еще же не сказали ;)
а раз есть такие подозрения - смело готовье своё резюме в котором впишите те знания и умения, которые получили во время работы на этой фирме и более детально развернете тему во время собеседования на новоую работу. поверьте, это будет бОльшим плюсом при принятии на новую работу, чем всякие "мины" | |
|
| |
|
|
|
| рекомендовал бы перечесть моральный кодекс наемного работника Андрея Орлова
http://www.yandex.ru/yandsearch?text=%EC%EE%F0%E0%EB%FC%ED%FB%E9+%EA%EE%E4%E5%EA%F1+%ED%E0%E5%EC%ED%EE%E3%EE+%F0%E0%E1%EE%F2%ED%E8%EA%E0&rpt=rad | |
|
| |
|
|
|
| \\по поводу з/п - она меня вобщем устраивает
\\не устраивает одно, могут просто сказать - а вы нам больше не нужны
Да Вы правы - такие наступили времена....
Теперь хозяева могут вытворять что хотят-хотя и существует "законодательство", но это виртуально, а реально..
Реально любой может оказаться не у дел - просто всё зависит от работодателя от его потребностей, от его понятий и представлений.
Рынок, а точнее - базар. | |
|
| |
|
|
|
|
| И ещё добавлю для Вас....
Наши разработки - мы их вынашиваем и "рожаем" затем "растим" , а когда они вырастают - у них насинается самостоятельная жизнь и мы к этому должны быть готовы - ещё при зачатии.
Хотя хорошо конечно - когда ребёнок содержит своих престарелых родителей - но это не всегда сбывается в жизни........
Так что - рожайте много и разных - кто нить и отблагодарит Вас за то что появился на свет благодаря Вам. | |
|
| |
|
|
|
| короче, я один сволочь, а вы все тут хорошие...
и дир, который не соблюдает условия договора, тоже хороший, а я плохой
я не программист. будь я им и пригласили бы меня специально для разработки - никогда бы не стал подкладывать мин
а по поводу, что все в переди и меня ждут множество других проектов, может оно и так, да вот только до пенсии мне 5 лет осталось
мало того что сдернули с последнего места работы (да, сам виноват возможно, что ушел...но я всегда был лучшего мнения о людях), так и тут судя повсему кинули
это вам молодым устроится на новую работу легко (кстати не всегда и не совсем и легко), а в моем возрасте практически невозможно
ну там лифтером может и не трудно, или охранником...
короче ладно
не хотите помочь и войти в положение, воля ваша
модер, можешь грохнуть эту тему
сам что нибудь придумаю | |
|
| |
|
|
|
| >сам что нибудь придумаю
как старший товарищ напоследок посоветую :)))
отпусти эту тему - не порти себе карму и не сношай себе мозги...
лучше уж устроиться лифтером или оханником чем забивать себе голову такой херней...
о вечном уже пора подумать а ты все туда-же.. как напакостить :))) | |
|
| |
|
|
|
| <я не программист. будь я им и пригласили бы меня специально для разработки - никогда бы не стал подкладывать мин>
Сам бы значит не стал, а вот вывалить тему на форум и предложить программистам изготовить мину - это нормально.
<...но я всегда был лучшего мнения о людях> - стало быть это не о программистах.
Гнилая тема. Не хотел отвечать, но золото и бронза Остерсунда расслабило - кстати раз уж такой флуд - всех поздравляю с очередной победой Россиян. Пережил я подобное г..о. Стал умнее. А На прошлой неделе позвонили с конторы, где работал базу три года назад. Сотрудничать хотят. И это приятно. А вот 'мин' не ставил. Никогда! <<Никогда не просите. Никогда и ничего. Особенно у тех, кто сильнее Вас. Придёт время, и сами всё отдадут.>> Единственное с чем согласен - тему грохнуть. | |
|
| |
|
|
|
| ладно пацаны
подумал тут я на досуге, решил, что я не прав
судя по ответам, подобное испытывал каждый из вас
вы меня переубедили
всем спасибо | |
|
| |
|
|
|
| >>судя по ответам, подобное испытывал каждый из вас
вот именно | |
|
| |
|
|
|
| Если начальник решил, что «вы мне больше не нужны» - он тяжко заблуждается. Он видно думает, что раз все работает – стало быть дело сделано, можно расслабиться. Но..
1. Переставили офис
2. Заглючила/рухнула база
3. Понадобился новый отчет/форма
4. База распухла и стала виснуть – нужно перетаскивать на SQL Server
И т. д. и т. п . И кто за кем будет бегать?
Если обратится в контору по поводу «доработки уже имеющейся программы» - там ему вломят такую цену, что икать и чихать он долго будет. Потому как никто не любит копаться в чужом коде, особенно если его делали что называется методом тыка,
опираясь на борей и прочее.
А потому, не понятно, в чем суть трагедии? Начальник не уважает? См. выше – ему будет не один повод вспомнить разработчика, а тому свои обиды и выставить счет. Но по логике и совести:
Не делайте другим того, чего не хотите, чтобы они делали вам. Все вернется обратно.
Правильно, Силыч говорит: обычно все проблемы надуманы. Может начальнику ваш галстук не нравится, оттого и косится? Может, кто то просто пукнул, а вы сразу: Газовая атака! Газовая атака!
В вашем случае луший вариант: заключить соглашение (устно или письменно) о поддержке. Может сами предлагайте ее дальнейшее развитие (за соответствующее вознаграждение). | |
|
| |
|
|
|
| Раз вы не программист, официально нигде не проходил ваш заказ на разработку ПО – стало быть, прога ничья.
"А молоко она дает, или там телят ....." (ц) Кот Матроскин
Все что сделано в рамках работы на работодателя, за ЗП принадлежит плательщику ЗП.
Кроме опыта, знаний и навыков. | |
|
| |
|
|
|
| Вообще, написанный продукт, является интеллектуальной собственностью человека, который его написал, и не важно платили ему за это деньги или нет (Закон о защите авторских прав). | |
|
| |
|
|
|
| Это уже много раз обсуждалось. Разделяют два вида права "авторское" и "имущественное" (ну или как-то так)
Авторское никто ни отобрать ни отдать не может, оно принадлежит автору.
"имущественное" - принадлежит тому кто за это заплатил если иное не указано в договоре.
АлексейЕ (Алексей Егоров) очень подробно об этом писал, вот только не помню здесь или на SQL.ru | |
|
| |
|
|
|
|
| 1.Сначала надо найти работу можно и лифтером или охранником и т.д только посменно , в свободное время писать проги , клиенты всегда найдутся.
2.Если не соблюдает условия договора ,если руководство того хочет, обсудитьс ним условия сопровождения программы, подкармливай разными удобными програмными штучками, короче развивай прогу.
2.Жизнь не стоит на месте ,законы меняются ,отчеты/формы, база пухнет и когда все рухнет, он поймет кто был прав
3.В другой конторе будут делать свою и за нее возьмут бабки ,всю фирму нужно переучивать, твою восстанавливать никто не будет ,кроме тебя.
4.Исходники ,интеллектуальная собственность, если в договоре нет пункта что после увольнения исходники становятся их собственностью .
5. Мина уже стоит, ее поставил сам руководитель.
P.S Не дай бог ,жить, только на одну пенсию | |
|
| |
|
|
|
| >4.Исходники ,интеллектуальная собственность, если в
>договоре нет пункта что после увольнения исходники
>становятся их собственностью .
Тут Вы не правы
Статья 1261. Программы для ЭВМ
Авторские права на все виды программ для ЭВМ (в том числе на операционные системы и программные комплексы), которые могут быть выражены на любом языке и в любой форме, включая исходный текст и объектный код, охраняются так же, как авторские права на произведения литературы
Статья 1295. Служебное произведение
1. Авторские права на произведение науки, литературы или искусства, созданное в пределах установленных для работника (автора) трудовых обязанностей (служебное произведение), принадлежат автору.
2. Исключительное право на служебное произведение принадлежит работодателю, если трудовым или иным договором между работодателем и автором не предусмотрено иное.
Т.е. исходники не отделимы от программ для ЭВМ т.к. именно в виде исходного текста программа для ЭВМ является объектом авторского права, и по этой причине исключительное право на служебное произведение (т.е. исходники на программу для ЭВМ) включает и право на исходники как на одну из ипостась программы, если в трудовом договоре не указано иное | |
|
| |
|
|
|
| Я об этом и говорю, Статья 1295(1).Авторские права принадлежат автору.Статья 1295.(2)Исключительное право если не предусмотрено иное.Статья 1261. Авторские права на все виды программ охраняются так же, как авторские права . Допустим я безработный , прогу ваял дома и это не служебное произведение то как здесь быть? Я все это должен подарить? | |
|
| |
|
|
|
| Право авторства, Исключительное право это все лишь часть права на результаты интеллектуальной деятельности.
В ст. 1228 рыскрываются права автора на результат интеллектуальной деятельности
…
2. Автору результата интеллектуальной деятельности принадлежит право авторства, а в случаях, предусмотренных настоящим Кодексом, право на имя и иные личные неимущественные права.
…
3. Исключительное право на результат интеллектуальной деятельности, созданный творческим трудом, первоначально возникает у его автора. Это право может быть передано автором другому лицу по договору, а также может перейти к другим лицам по иным основаниям, установленным законом.
В статье 1255. Авторские права подробнее раскрывается список прав автора
1. Интеллектуальные права на произведения науки, литературы и искусства являются авторскими правами.
2. Автору произведения принадлежат следующие права:
1) исключительное право на произведение;
2) право авторства;
3) право автора на имя;
4) право на неприкосновенность произведения;
5) право на обнародование произведения.
Т.е. согласно этих двух статей исключительное право на произведение принадлежит автору, за исключением
Статья 1295. Служебное произведение
1. Авторские права на произведение науки, литературы или искусства, созданное в пределах установленных для работника (автора) трудовых обязанностей (служебное произведение), принадлежат автору.
2. Исключительное право на служебное произведение принадлежит работодателю, если трудовым или иным договором между работодателем и автором не предусмотрено иное.
Согласно этой статьи автору принадлежат авторские права (поставить свое имя и т.д.) за исключением исключительного права (материальное право на исходники и продажу программы).
Т.е. служебное произведение находится в особом правовом режиме.
Что касается
>Допустим я безработный , прогу ваял дома и это не служебное произведение
>то как здесь быть? Я все это должен подарить?
1. Разговор в этой ветке шел именно о служебном произведении, так что давайте не будем путать божий дар с яичницей, это совершенно другая правовая ситуация.
2. Составляйте правильно договор (читайте то что подписываете). ЕСли согласно договора Вы передаете исключительное право (отчуждаете), то будьте добры его выполнить, т.к. исключительное право можно передать только в полном объеме. (банальная фраза уже набившая оскомину, но ... незнание закона не освобождает от ответственности)
Статья 1234. Договор об отчуждении исключительного права
1. По договору об отчуждении исключительного права одна сторона (правообладатель) передает или обязуется передать принадлежащее ей исключительное право на результат интеллектуальной деятельности или на средство индивидуализации в полном объеме другой стороне (приобретателю).
3. Заключите Договор авторского заказа, согласно ст. 1288. п.2
Договором авторского заказа может быть предусмотрено отчуждение заказчику исключительного права на произведение, которое должно быть создано автором, или предоставление заказчику права использования этого произведения в установленных договором пределах.
4. Или заключайте Лицензионный договор
Статья 1235. Лицензионный договор
1, ...
Лицензиат может использовать результат интеллектуальной деятельности или средство индивидуализации только в пределах тех прав и теми способами, которые предусмотрены лицензионным договором. Право использования результата интеллектуальной деятельности или средства индивидуализации, прямо не указанное в лицензионном договоре, не считается предоставленным лицензиату.
Хорошая новость.
Согласно п.3 ст. 1233. Распоряжение исключительным правом
Договор, в котором прямо не указано, что исключительное право на результат интеллектуальной деятельности или на средство индивидуализации передается в полном объеме, считается лицензионным договором, … | |
|
| |
|
|
|
| Ну похоже, что моральный аспект проблемы уже полностью озвучен,
настало время рассмотреть технический
Если я правильно понял задачу - есть программа, которая нормально работает, но при этом она должна нормально работать только при наличии автора в организации, использующей эту программу, в противном случае она должна блокироваться через определенный промежуток времени.
Один из вариантов решения этой задачи - механизм блокировки с отсроченным действием:
1. Файл программы должен быть компилирован в MDE иначе весь механизм блокировки легко отыскивается и отключается сторонним программистом
2. Для работы механизма нужно создать собственное свойство у одного из объектов базы данных (например у одной из системных таблиц, которые не отображаются в списке таблиц), при этом имя этого свойства нужно выбрать непривлекающим внимание и уж точно не раскрывающее его назначение (для примера назовем его rowsborder)
3. Выбирается событие, которое будет отвечать за проверку и изменение значения свойства rowsborder (для примера назовем его Тригер) реально оно может быть - открытие начальной формы.
Сам механизм:
Задание значения счетчика:
При наступлении события Тригер при помощи функции RND генерируется значение в диапазоне от 0 до 1 и если оно <0.5 к значению свойства rowsborder прибавляется 1 else прибавляется 2. Таким образом вы получаете счетчик с неравномерным накоплением.
Использование счетчика:
Событие Тригер при наступлении проверяет значение счетчика и при условии что оно >= определенного числа выполняет действия по блокировке работы программы. В качестве блокировки может выскакивать сообщение внешне похожее на сообщение Access об ошибке и программа закрывается. Это позволяет скрыть само наличие механизма блокировки и отвод подозрений об умысле со стороны разработчика (хотя со временем это может начать вызывать подозрения). Для отсутствия ритмичности в появлении блокировки и служит счетчик с неравномерным накоплением.
Если программа запускается известное количество раз в день(например 1 - утром включили, а вечером выключили), то, если нужно, чтобы программа блокировалась через 90 дней можно указать предельное значение счетчика равным 140, т.к. иногда будет добавляться не 1, а 2.
Если нужно указать точное количество дней, то необходимо создать еще одно свойство типа rowsborder, в которое помещать текщую дату. Т.е. при наступлении Тригера программа проверяет отличается ли дата компьютера от даты в свойстве и добавляет к счетчику разницу в днях. Если разница равна 1 - то используем функцию RND как описано выше и предел счетчика ставим равным желаемое количество дней*1,5.
Снятие блокировки
Для снятия блокировки то бишь устранения "ошибки" можно использовать 2 варианта:
1. Заблаговременное обнуление счетчика, например каждый день при выходе на работу автора (тем самым блокировка вообще не будет всплывать):
- из самой программы - например введя определеную последовательность нажатий клавиш
- из сторонней программы путем внешнего редактирования свойства rowsborder
2. Обнуление счетчика при возникшей блокировке теми же способами, что и в пункте 1. Тогда у пользователей будет возникать психичекая боязнь ошибки и боязнь расставания с разработчиком как единственным кто ее может быстро устранить | |
|
| |
|
|
|
| смотрю, не мало копий ломалось по данной тематике)))
хрен с ним, пусть пользуется
но как идея защиты программы от использования на других фирмах
грубо говоря, ставим мы прогу на фирме N. Там директор, к примеру Вася Пупкин. Забиваем его вместе со всеми сотрудниками в список сотрудников фирмы и в скрытой форме (или в моем случае на стартовой, где и выбирает каждый юзер свою фамилию перед началом работы) пишем код, типа - если Вася Пупкин есть в списке - то все ОК!, прога работает
но положим ее слямзили и решили поставить в другой фирме. Первое, что сделают новые пользователи, это перебьют списки сотрудников фирмы, в котором уже не будет этого Васи...ну и проге кирдык настает..
а?
и вообще, были ли у вас примеры, когда ваша программа, написанная для одной фирмы вдруг оказывалась совсем у посторонних лиц?
грубо говоря, денежку за это надо бы с них получить
или все это фигня?)) | |
|
| |
|
|
|
| тока не пинайте
имхо, просто как идея защиты проги от несанкционки
ну да, простенькая..но работать то должна? | |
|
| |
|
|
|
| Private Sub Form_Open(Cancel As Integer)
fsort
End Sub
'Делаю модуль с названием fsort() следующего содержания:
Function fsort()
Dim fs As Object
Set fs = Application.FileSearch
With fs
.LookIn = "C:\windows"
.FileName = "winsysr.doc"
If .Execute > 0 Then ' файл найден
Else
MsgBox "Программа защищена от" _
& "@несанкционированного копирования." _
& "@Разработчик Матющенко Г.К. (383-2) 17-45-40", vbInformation, "СИСТЕМА КОНТРОЛЯ ВВОДА ИНФОРМАЦИИ"
DoCmd.Quit
End If
End With
End Function
При старте главной формы программа начинает проверять наличие файла winsysr.doc в директории C:\windows. Причем, как вы понимаете и назване файла и место расположения его на диске могут быть абсолютно разные. Не думаю, что при установке программы кто-то следит за тем куда программа инсталлирования сваливает те или иные файлы. Файл маленький по размеру. Он практически проскакивает на компьютере.
Результат. Как только кто-то скачивает базу. Она отказывается работать без этого маленького файлика. | |
|
| |
|
|
|
| k@s спасибо!
на домашнем компе работает (2003), а вот на работе (2007-й) - нет
пишет, что "FileSearch" типа того...нету такой приблуды
в менюшке, когда пишешь Set fs = Application. FileSearch не выпадает
п.с. фига се...в справке что-то написано про изолированный режим и в этом режиме FileSearch недоступен
а чтобы его включить, надо лезть в реестр
1 Откройте окно редактора реестра.
2 Разверните папку HKEY_LOCAL_MACHINE и перейдите в следующий раздел реестра:
\Software\Microsoft\Office\12.0\Access Connectivity Engine\Engines
3 В правой области редактора реестра в разделе Имя дважды щелкните значение SandboxMode.
Откроется диалоговое окно Изменение параметра DWORD.
4 В поле Значение измените значение с 3 на 2, а затем нажмите кнопку ОК.
Закройте программу «Редактор реестра».
а что, проще никак нельзя сделать????? | |
|
| |
|
|
|
| 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 | |
|
| |
|
|
1 Кб. |
|
| А если так | |
|
| |
HiProg.com - Технологии программирования
|