Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Защита контрола

272
07 февраля 2006 года
vladsoft
512 / / 20.08.2000
Всем привет.

Вопрос собственно здесь.
Спасибо!
273
07 февраля 2006 года
3A3-968M
1.2K / / 22.12.2005
хм, странно что тебе на RSDN не ответили:( Ты используешь атрибут LicenseProviderAttribute и это верно, также ты используешь класс LicFileLicenseProvider и его Type для применения в атрибуте - это тоже верно. LicFileLicenseProvider - это стандартный провайдер лицензии, который информацию о лицензии берёт из файла. Файл лицензии должен быть в дистрибе с твоей прогой. Требования к файлу лицензии (на самом деле это обычный текстовой файл):
1) Расширение *.lic
2) Имя должно совпадать с ПОЛНЫМ именем твоего класса (т.е. включая его пространство имён). Например: MyNamespace.MyClass.lic
3) Текст файла должен быть такой:
MyNamespace.MyClass is a licensed component.
Хотя по поводу последнего мелкомягкие лукавят, туда можно засунуть любой текст.
272
07 февраля 2006 года
vladsoft
512 / / 20.08.2000
Цитата:
Originally posted by 3A3-968M
хм, странно что тебе на RSDN не ответили:( Ты используешь атрибут LicenseProviderAttribute и это верно, также ты используешь класс LicFileLicenseProvider и его Type для применения в атрибуте - это тоже верно. LicFileLicenseProvider - это стандартный провайдер лицензии, который информацию о лицензии берёт из файла. Файл лицензии должен быть в дистрибе с твоей прогой. Требования к файлу лицензии (на самом деле это обычный текстовой файл):
1) Расширение *.lic
2) Имя должно совпадать с ПОЛНЫМ именем твоего класса (т.е. включая его пространство имён). Например: MyNamespace.MyClass.lic
3) Текст файла должен быть такой:
MyNamespace.MyClass is a licensed component.
Хотя по поводу последнего мелкомягкие лукавят, туда можно засунуть любой текст.


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

273
07 февраля 2006 года
3A3-968M
1.2K / / 22.12.2005
Допустим у тебя есть исполняемый файл или библиотека классов MyFile.dll, этот файл содержит лицензированный компонент MyNamespace.MyClass, файл находится в папке MyDir. Применяем атрибут LicenseProviderAttribute(typeof(LicFileLicenseProvider)) к классу MyNamespace.MyClass. Затем в папке MyDir создаём файл MyNamespace.MyClass.lic, в нём пишем: "MyNamespace.MyClass is a licensed component". Затем компиль проект и собственно всё...
272
07 февраля 2006 года
vladsoft
512 / / 20.08.2000
Цитата:
Originally posted by 3A3-968M
Допустим у тебя есть исполняемый файл или библиотека классов MyFile.dll, этот файл содержит лицензированный компонент MyNamespace.MyClass, файл находится в папке MyDir. Применяем атрибут LicenseProviderAttribute(typeof(LicFileLicenseProvider)) к классу MyNamespace.MyClass. Затем в папке MyDir создаём файл MyNamespace.MyClass.lic, в нём пишем: "MyNamespace.MyClass is a licensed component". Затем компиль проект и собственно всё...


Сделал все как ты написал и как в MSDN было сказано, но ничего не произошло, я взял dll и спокойно открыл свой компонент в другой студии на др. машине. :(

273
09 февраля 2006 года
3A3-968M
1.2K / / 22.12.2005
Попробуй применить к сборке пару ключей, сгенерированную при помощи Strong Name Utility
273
09 февраля 2006 года
3A3-968M
1.2K / / 22.12.2005
А ещё есть такая штука, как License Compiler, лежит прога в дистрибе с Framework и называется lc.exe, при помощи можно скомпилить лицензию и разместить в экзешнике в виде ресурса, в MSDN есть потробный хелп.
272
09 февраля 2006 года
vladsoft
512 / / 20.08.2000
Цитата:
Originally posted by 3A3-968M
Попробуй применить к сборке пару ключей, сгенерированную при помощи Strong Name Utility


Это как?

273
09 февраля 2006 года
3A3-968M
1.2K / / 22.12.2005
Вероятнее всего тебе поможет вариант с License Compiler. А про Strong Name - это возможность предотвратить изменение кода в твоих приложениях. При помощи утилиты sn.exe ты генеришь двоичный файл, содержащий пару: открытый и закрытый ключ. Применяешь атрибут AssemblyKeyFile к своей сборке и твоя сборка шифруется по алгоритму RSA. Это асинхронный алгоритм, для расшифровки используется один ключ, для шифрования другой. Секретный ключ остаётся у тебя а открытый размещается в сборке, таким образом среда CLR дешифрует её для чтения при помощи открытого ключа. Любой желающий сможет дизассемблировать твой файл, но поменять не сможет так как нет закрытого ключа. Пример применения атрибута:
[assembly: AssemblyKeyFileAttribute("mykey.snk")]
272
09 февраля 2006 года
vladsoft
512 / / 20.08.2000
Цитата:
Originally posted by 3A3-968M
Вероятнее всего тебе поможет вариант с License Compiler. А про Strong Name - это возможность предотвратить изменение кода в твоих приложениях. При помощи утилиты sn.exe ты генеришь двоичный файл, содержащий пару: открытый и закрытый ключ. Применяешь атрибут AssemblyKeyFile к своей сборке и твоя сборка шифруется по алгоритму RSA. Это асинхронный алгоритм, для расшифровки используется один ключ, для шифрования другой. Секретный ключ остаётся у тебя а открытый размещается в сборке, таким образом среда CLR дешифрует её для чтения при помощи открытого ключа. Любой желающий сможет дизассемблировать твой файл, но поменять не сможет так как нет закрытого ключа. Пример применения атрибута:
[assembly: AssemblyKeyFileAttribute("mykey.snk")]



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

273
09 февраля 2006 года
3A3-968M
1.2K / / 22.12.2005
К сожалению, это не исходник, поэтому могу описать последовательность действий:
1) Создание пары ключей:
Запускаем с консоли .NET SDK Command Prompt
sn -k keyfile.snk
Далее из папки, где находится sn, дёргаем файл keyfile.snk и кладём в папку с проектом. Далее заходим в проект, в Project Explorer'е выбираем файл AssemblyInfo.cs, там пишем
[assembly: AssemblyKeyName("")]
[assembly: AssemblyKeyFile("keyfile.snk")]
Компилим. Теперь сборка зашифрована. Ключ keyfile.snk храним у себя, как государственную тайну.
2) Теперь разбираемся с License Compiler:
Допустим есть файл license.txt с текстом лицензии (в нём чё хош то и пиши), есть файл MyLib.dll с компонентом MyNamespace.MyClass. файл этот используется приложением MyProg.exe.
Запускаем с консоли .NET SDK Command Prompt
Пишем
lc /target:MyProg.exe /complist:license.txt /i:MyLib.dll /outdir:c:\MyPath
В папке MyPath лежит скомпиленная лицензия, теперь компонент защищён.
Для подобных целей есть класс Microsoft.Build.Tasks.LC, он дублирует все эти функции.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог