Указатель NULL
- это тот, который указывает на никуда. Когда вы разыскиваете указатель p
, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p
является нулевым указателем, местоположение, хранящееся в p
, является nowhere
, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception
.
В общем, это потому, что что-то не было правильно инициализировано.
, Что защитить от и что не защитить от:
Имеют в виду, что люди будут всегда находить способ обойти Ваш пробный период. Таким образом, Вы хотите сделать это раздражающим, чтобы человек должен был обойти Ваш пробный период, но не имеет значения, если невозможно обойти Вас пробный период.
Большинство людей будет думать, что это - слишком много работы, чтобы попытаться обойти Ваш пробный период, если существует даже простой механизм. Например, люди могут всегда использовать filemon/regmon для наблюдения, какие файлы и ключи реестра изменяются после установки программного обеспечения.
Однако простой механизм является лучшим, потому что он тратит впустую меньше Вашего времени.
Вот некоторые идеи:
Расширяющиеся пробные версии:
Для нас, когда клиент запрашивает испытательное расширение, мы посылаем им автоматизированное электронное письмо, которое содержит программу "TrialExtend.exe", и пробная версия расширяют код. Эта программа связывается, наш сервер с пробной версией расширяют код для проверки его. Если код проверен, их пробный период сбрасывается.
Независимо от того, что Вы делаете, не спускаете глаз с системной даты. Самый старый прием в книге должен установить приложение в какой-то момент в будущем и затем возвратиться к реальной дате, как только приложение сохранило глупую дату на первом показе. Возможно, синхронизируйте ключ с репозиторием онлайн?
Если у Вас (довольно) вероятно, будет сетевое соединение, у Вас может быть регистр установщика с Вашим веб-сайтом, затем проверить по нему каждый раз, когда оно запускается.
, Если это не выполнимо, пишущий значение в мировую модифицируемую точку в файловой системе (ключ реестра, запись в и / и т.д. conf файл, и т.д.) может быть осуществимо.
Великое ответа Brian, но я хотел бы добавить что-то.
Пользователи Linux обычно не привыкли к оплате программного обеспечения, и они имеют тенденцию быть более технически подкованными и возможно даже "религиозными" по проблемам с открытым исходным кодом.
По этой причине я действительно рекомендовал бы сохранить это простым - это - действительно просто маленький барьер для создания покупки программного обеспечения, по крайней мере, столь же легкой как кража его.
Я предположил бы, что это ворчит или отключает определенные опции (например, сохраняющий) после пробного периода вместо того, чтобы умереть полностью. Просто наблюдение, но основанные на функции ограничения кажется более распространенным в мире Linux.
Как в стороне, заставляя Linux присвоить версию версии "первого класса" - достойный установщик и т.д. поможет.
Если Вы являетесь относительно маленькими, или Ваша программа относительно ниша, существует довольно маленький шанс, который любой потрудится взламывать, это - поэтому просто концентрируется на том, чтобы заставлять хороший продукт с прямым придираться однажды время.
Возможно, настоящей проблемой является ограниченная Временем пробная версия. Компания, на которую я работаю, делает большую работу Active Directory, и мы обычно ограничиваем наше программное обеспечение небольшим количеством пользователей для пробных версий. Я чувствую, что ограничение функциональности в некотором роде иногда лучше, легче реализовать и не перестало работать, когда пользователь просто изменяет дату на их компьютере.
Существует уравновешивание, в котором Вы не можете ограничить функциональность слишком строго, иначе пользователи ничего не вытаскивают из пробной версии. В то же время предел, который слишком свободен, не дает стимула купить.