2009-06-16 12 views
3

У меня есть сомнения в лицензировании. Я использую приложение C#. Сценарий: Пользователь получает лицензию на приложение по почте в виде файла. Он/она сохраняет файл лицензии на рабочем столе. Позже он/она выбирает лицензию и регистрирует клик. Теперь приложение зарегистрировано (лицензировано). Через несколько дней, если пользователь удалит файл лицензии с рабочего стола. Приложение перестанет работать, так как нет файла. Я хочу сохранить данные о лицензии где-нибудь в реестре или файле (секретный путь). Но Что делать, если у этой учетной записи недостаточно прав для чтения/записи реестра или файла. Какой хороший способ? Вы, ребята, знаете какой-либо другой метод? Я новичок в этой области. Пожалуйста, помогите мне.Хранение сведений о лицензии

Заранее спасибо.

ответ

3

Все данные приложения должны храниться в каталоге% appdata%.

Поскольку вы указали C#, вот код, чтобы получить папку:

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 

Это будет выводить по следующему адресу: В XP: C:/Documents и Settings/имя пользователя/Data Application/ в Vista: C:/Users/имя пользователя /AppData/Roaming

Я рекомендую вам создать папку в этой директории для вашего приложения и скопировать туда.

+2

Если вы планируете использовать несколько пользователей (на одном компьютере) с помощью своего программного обеспечения, вы должны поместить лицензию в каталог «Все пользователи» (на XP), поэтому C:/Documents and Settings/Все пользователи/Данные приложения /. – Dashogun

+1

ie Environment.GetFolderPath (Environment.SpecialFolder.CommonApplicationData); –

0

Как-то мне рассказывал некоторое время назад: «Реестр предназначен для взаимодействия приложения с системой, а не для взаимодействия приложения с пользователем». Я не знаю, правильно ли это посмотреть. Я также использовал для хранения информации о пользователе в реестре, но не более того. Установка параметров в файл является лучшим способом. Если вы хотите хранить такие вещи, как серийные номера, не забывайте их склеивать.

0

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

+0

Лицензия уже является файлом, который, я считаю, основан на исходном вопросе.Кроме того, запись в каталоге установки приложения обычно не является хорошей идеей. У вас нет доступа для записи в Vista/7 из-за UAC, поскольку приложения должны записывать только в каталоги приложений appdata. –

2

У Microsoft есть предложения по местам хранения в Windows Vista: Application Certification and Compatibility document.

Таким образом, если [ваша программа] постоянно меняет общий DATA (не CODE), то она [данные] должна логически входить в папку ProgramData. Если это индивидуальный DATA, он может перейти в профиль пользователя.

Мы используем файл лицензии и храним его в папке ProgramData \ CompanyName. Но наши лицензии находятся на каждой машине, а не на пользователя. По умолчанию эта папка скрыта в Windows, но не защищена UAC.

+0

Ровно! И, как упоминалось выше, доступно в C# с помощью: Environment.GetFolderPath (Environment.SpecialFolder.CommonApplicationData); –

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