2016-07-07 3 views
1

Мне интересно, как я могу установить дату истечения срока действия моего приложения, но так, чтобы клиенты (клиенты на самом деле не существуют, но, допустим, когда-нибудь они будут существовать) необходимо вставить хешированный ключ (мой дата) в их экземпляр продукта. На данный момент я решаю это, как описано ниже, но я думаю, что это не очень хорошая идея. Позвольте мне объяснить:Лицензирование C# Application

Я создал небольшое приложение с помощью сборщика данных, и я выбираю дату, пока мое приложение не будет активным, для пример 7.7.2016, и хранить его в качестве тиков в реестре и читать, что тикает из реестра каждый раз, когда я запускаю свое приложение. Это неплохо, но проблема в том, что я должен запустить приложение на ПК клиентов, чтобы написать в свой реестр, выбрав дату, и это не хорошо, потому что, если я забуду удалить мое маленькое приложение, клиент может установить дату, когда захочет , Другим решением является создание даты на моем локальном компьютере, считывание значения галочки из копии реестра и дистанционное вхождение ключа (значение тика из реестра) или что-то еще на ПК клиента. Но это нехорошее решение, и я не доволен этим, потому что клиент может узнать, где я храню тики и скопировать его на другую машину, а другой и еще ...

Мне было интересно, могу ли я сделать следуйте за:

На моей развивающейся машине я запускаю программное обеспечение для активации (генератор ключей), а затем я могу выбрать дату, пока мое программное обеспечение не будет действительным и не получит идентификатор процессора или жесткого диска и не соединить его создайте хэш [ID + DATE] (поэтому он уникален для каждой отдельной машины) и сохраните его в базе данных или в реестре, независимо от того, и в моем приложении для клиентов я могу в следующий раз «распаковать» хэш, чтобы получить только часть даты, поэтому я могу делать следующие действия каждый раз, когда клиент запускает приложение:

if(DateTime.Now > "HASHED date part") 
    Message : application has expired! 

Могу ли я установить дату + идентификатор и хеш его или защитить его каким-либо образом, поэтому пользователь не может его прочитать или изменить, а позже я сокращу дату и проверьте, действительно ли приложение действует?

ответ

0

Вы можете разместить сервер лицензирования и дать каждому пользователю токен, который будет использоваться для проверки при запуске приложения. Тогда все ваши данные dateTime можно было бы обработать на вашем сервере, и было бы гораздо меньше риска для ваших пользователей быть подлым. Это означает, что все, кто запускает ваше приложение, должны быть подключены к сети, хотя это может быть неприемлемо для вас.

+0

Да, это неприемлемо, потому что давайте предположим, что пользователи будут работать в автономном режиме –

+0

Точно так. Это также требует «pinging server», что означает активное подключение к Интернету. Не разумное предположение. –

+0

Интересные, хорошие парни. Лично я был бы рад предположить, что все нуждаются в подключении к Интернету, но это потому, что большинство моих приложений зависят от одного независимо. –

1

Нет, вы не можете. Целый пункт хэша конкретно, что это один из способов. Это алгоритм, который составляет , разработанный, чтобы вы не могли определить исходные данные, из которых был создан хеш.

Вам необходимо будет зашифровать данные, если вы хотите иметь возможность воссоздать исходные данные из данных шифрования.

Также стоит отметить, что существует множество способов победить ваш подход, чтобы пользователь не запускал программу; лицензионное программное обеспечение хорошо.

+0

Ahh, так что я должен/должен _encrypt_ HARD DISK ID + DATETIME вместе и позже _decrypt_, чтобы скрыть и сократить дату? –

+0

@ billy_56 * Если * вы зашифровали дату, тогда вы могли бы расшифровать ее программу, чтобы восстановить дату. Конечно, существует множество способов для пользователя этой программы, чтобы затем манипулировать этим процессом, учитывая, что он работает на * своей * машине, чтобы гарантировать, что они могут запускать программу даже после указанной даты. – Servy

+0

Да, я понимаю, на данный момент я просто хочу, чтобы один экземпляр приложения работал только один раз на компьютере. Поэтому я постараюсь сделать это, как вы сказали, зашифровать - decrypt = читать данные и т. Д., Так что вы могли бы дать мне совет, который или что я должен использовать для выполнения этой задачи? есть, вероятно, больше способов зашифровать и расшифровать что-то, поэтому, если мы говорим о C#, вы можете дать мне совет :) –

1

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

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

(Да, мы отсканировать несколько каталогов только, чтобы сделать его менее чем тривиальный «поиграться дата» ...)

Мы доверия их, и думают, что они делают? Uh huh ... они купить это. Если вы честны с кем-то и даете им продукт, который действительно стоит того, за что вы его взимаете, люди вполне готовы быть честными с вами. (И, не теряйте сон над теми немногими, кто не ... Эти люди не ваши клиентов, и они никогда не будут. Никогда не делайте жизнь трудной для кого-то, кто : платит вам деньги.)

В последней версии нашего продукта информация о лицензии хранится в реестре Windows и вставляется во время установки продукта с использованием DLL-файла, который упакован и вызывается установщиком. Он просто состоит из серийного номера, вектора свойств продукта и даты истечения срока действия в обфускации шестнадцатеричной строки. Номер также используется для скрытия названия компании с лицензией, которое отображается на экране всплытия при запуске программного обеспечения. При запуске установщика требуются привилегии администратора по целому ряду причин, включая этот. Чтобы изменить информацию о лицензии, вы должны переустановить.

Любое программное обеспечение, которое вы собираетесь продавать правительствам (очень прибыльный сегмент рынка), обычно необходимо имеют функции контроля лицензий, а также не должен иметь опцию «бесплатно демо» любого рода, потому что правительства, как правило, не разрешено тратить государственные деньги на все, что можно получить (в любом случае) «бесплатно».

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

Для меня точка повторяется: «Позаботьтесь о своих клиентах, и они позаботятся о вас». Если ваша схема лицензирования является «обременительной и однозначной» ... ;-) ... ну, это одна из вещей, которые люди do очень серьезно рассматривают при принятии решения о покупке ваших товаров. Вы можете потерять продажу только потому, что ваша схема является болью в a * s.

Смежные вопросы