Где мне хранить ключ активации моего приложения?

Я написал приложение и хотел бы добавить к нему регистрационный ключ / серийный номер (я неравнодушен к минимуму неудобств - аля №4 по адресу эта статья Эрика Синка). У меня вопрос о том, где хранить «активацию» после регистрации приложения. Насколько я понимаю, у меня есть компромисс между хранением ключа в общедоступном месте, где все пользователи могут его читать (но для этого требуются права администратора для сохранения там), и сохранением активации для каждого пользователя (но затем каждый пользователь в компьютер придется активировать самостоятельно). Это дает мне два варианта:

  1. Какой-то пользователь с правами локального администратора активирует продукт. Активация сохраняется в HKLM, в папке программных файлов или где-то еще, где все пользователи могут ее прочитать, и продукт активируется для всех пользователей.
  2. Пользователь (с правами администратора или без) активирует продукт. Активация хранится где-то ориентированно на пользователя (для каждого пользователя app.config, HKCU и т. Д.). Плюс в том, что пользователю не обязательно быть администратором. Обратной стороной является то, что если есть 6 пользователей, которые используют компьютер, каждый должен активировать продукт. Каждый из них может повторно использовать один и тот же серийный номер, но им все равно придется вводить его.

Это действительно компромисс? Если да, то что сделали другие? Как разработчик я привык к тому, что люди являются локальными администраторами, но в реальном мире я не ожидаю, что многие из моих корпоративных пользователей будут локальными администраторами, что заставляет меня склоняться к варианту 2. Часто ли компьютеры используются совместно достаточно, чтобы я не беспокоился?

Опять же, я не спрашиваю, как физически зарегистрировать компьютер - меня это не волнует. Я собираюсь только проверить контрольную сумму предоставленного ключа и дать добро, так как я хочу быть как можно более неинвазивным.


person SqlRyan    schedule 12.07.2009    source источник


Ответы (6)


Я бы порекомендовал решение, не требующее прав администратора. Многие пользователи, особенно в общих средах, не будут иметь этих прав и не смогут удобно найти кого-нибудь с ними.

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

person Rik Heywood    schedule 12.07.2009
comment
Но чертовски неприятно регистрировать одно и то же приложение снова и снова на одном компьютере для разных пользователей! Считаю это недостатком в дизайне приложений. - person Vilx-; 12.07.2009
comment
Что ж, одно из решений, которое мы использовали, - это поместить информацию об активации в реестр текущих пользователей, а затем, если доступны права администратора, также поместить ее на локальный компьютер. Если доступны права администратора, никто из общих пользователей на машине не потерпит беспокойства. Если права администратора недоступны, каждому пользователю предлагается активировать один раз. - person Rik Heywood; 12.07.2009
comment
Мне нравится идея хранить его хотя бы в HKCU, а затем и в HKLM, если у пользователя есть права администратора. Это кажется минимальным неудобством - регистрация не потребует прав администратора, но воспользуется ими, если они есть. - person SqlRyan; 12.07.2009

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

Другое:

  • USB / другой тип ключа (аля старый 3DMax)
  • простой старый текстовый файл (как программное обеспечение Garmin GPS на мобильном устройстве)
  • Закодируйте их / перепишите ключ в свой двоичный файл или часть вашего двоичного файла (делал этот трюк еще в старые дни DOS)
  • Храните их в своей базе данных через Интернет (как EverQuest / другие игры MMORPG)
  • Локальный ключ db (я думаю, аля MathLab)
person Jimmy Chandra    schedule 12.07.2009

Как насчет использования изолированного хранилища для вашего приложения?

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

person Heiko Hatzfeld    schedule 21.09.2009
comment
Вы можете привести пример того, как я могу этого добиться? Я не знаком с этим термином, поэтому хочу убедиться, что понимаю вашу идею. - person SqlRyan; 22.09.2009
comment
Вы можете найти пример здесь: msdn.microsoft.com/en-us/library/ - person Heiko Hatzfeld; 22.09.2009

Мы сохраняем наш код активации в реестр для текущего пользователя (HKCU), с которым у нас было очень мало проблем. Наши клиенты работают на всем, от домашних компьютеров до тонких клиентов в совместных сетях.

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

person Peter Olsson    schedule 12.07.2009

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

Однако это не то или иное. Есть места папок, которые доступны для записи всем пользователям, например, папка ProgramData. Ключ состоит в том, чтобы сделать файл доступным для чтения / записи для всех, чтобы вы могли проверять содержимое независимо от пользователя.

DeployLX Licensing делает это для незащищенных данных лицензий, чтобы их могли использовать несколько пользователей без администратор, явно предоставляющий разрешение.

person Paul Alexander    schedule 07.03.2012

Вы должны быть последовательны. Если для установки программы требовались права администратора, то для ее регистрации вполне закономерно требовать права администратора. Точно так же, если вам каким-то образом удалось установить его без прав администратора, зарегистрируйте его тоже.

Если вы установите и зарегистрируетесь за один шаг, это не будет проблемой.

person Mark Ransom    schedule 07.03.2012