# Генераторы ключей: .Net-версия

### Описание

.Net-версия генератора ключей преставляет собой сборку, содержащую все необходимое для генерации серийных номеров. Исходные коды находятся в каталоге Keygen\Net в виде двух проектов: KeyGen (непосредственно генератор серийных номеров) и Usage (пример использования генератора).

Генератор поставляется в исходных кодах, чтобы иметь возможность пересобрать его под нужную версию .Net Framework, однако крайне не рекомендуется вносить изменения в его код. В будущих версиях VMProtect возможно добавление новых возможностей в генератор, что приведет к необходимости повторной модификации кода. Также возможно появление трудноуловимых ошибок. В случае нахождения ошибки в оригинальном коде генератора или пожеланий по его улучшению - обращайтесь в службу поддержки.

### Использование генератора

Возьмите за основу код из проекта Usage, добавьте в Ваш проект ссылку на сборку VMProtect.KeyGen.dll, после чего Вы сможете генерировать серийные номера в вашем приложении. Для нормальной работы генератор должен понимать, к какому продукту Вы собираетесь генерировать серийные номера. Для этого на закладке "Лицензии" VMProtect нажмите кнопку «Экспорт» и в выпадающем списке выберите «Параметры для KeyGen.Net». В текстовом поле ниже появятся несколько строк текста, которые необходимо скопировать и перенести в Ваше приложение в виде строковой константы.

Пример вызова генератора представлен ниже:

    try
    {
            string data = @""; // put the exported data here
            Generator g = new Generator(data);
            g.UserName = "John Doe";
            g.EMail = "john@doe.com";
            g.ExpirationDate = DateTime.Now.AddMonths(1);
            g.MaxBuildDate = DateTime.Now.AddYears(1);
            g.RunningTimeLimit = 15;
            g.HardwareID = "AQIDBAgHBgU=";
            g.UserData = new byte[] { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
            string serial = g.Generate();
            Console.WriteLine("Serial number:\n{0}\n", serial);
    }
    catch (Exception ex)
    {
            Console.WriteLine("Error: {0}", ex);
    }

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

Серийный номер может содержать различную информацию, которая задается через свойства генератора. Пример выше показывает, как заполнить абсолютно все поля серийного номера. Отдельные поля имеют ограничения. Например, поля User Name и E-Mail не могут принять строки, которые в кодировке UTF-8 будут иметь длину, превышающую 255 символов. В случае подачи некорректных данных, свойства выбрасывают исключения с описанием проблемы.

По окончании настройки генератора вызывается метод Generate(), который и создает серийный номер. На этом этапе происходит компоновка всех данных номера, подсчет контрольных сумм и, непосредственно, шифрование. В случае, если объем данных превышает максимально допустимую длину, метод выбросит исключение.

В случае, если необходимо сгенерировать несколько серийных номеров, можно использовать класс генератора несколько раз, не пересоздавая его. Чтобы "очистить" любое из свойств генератора, ему нужно присвоить значение null.

© 2006-2015 Copyright VMProtect Software