ComponentModel.LicenseException в Windows 7 для лицензионного управления - PullRequest
1 голос
/ 24 сентября 2010

У меня есть проект, который отлично работает под Visual Studio 2008 на Windows XP.Я устанавливаю 64-разрядную систему Windows 7 с Visual Studio 2008 и обнаружил, что один из моих лицензионных элементов управления не проходит проверку лицензии.При компиляции я получаю эту ошибку:

Исключительная ситуация при создании типа 'Sax.Barcodes.Barcode, Sax.Barcodes, Version = 1.2.0.0, Culture = нейтральный, PublicKeyToken = 57b9527db291dbf8' System.ComponentModel.LicenseException: Создается экземпляр типа «Sax.Barcodes.Barcode», и действительная лицензия для типа «Sax.Barcodes.Barcode» не может быть предоставлена.Пожалуйста, свяжитесь с производителем компонента для получения дополнительной информации.Licenses.licx

Я установил элементы управления Sax в свою систему и ввел серийный номер.Стоит отметить, что эти элементы управления являются элементами управления .Net 1.1, и я переключаю проект на 2.0.Также стоит отметить, что мне удалось успешно обновить проект до .Net 2.0 в моей системе XP, и лицензирование работало нормально.Похоже, что установщик Sax Barcode не настроил лицензионное право в Win 7 и / или VS 2008.

Я попытался добавить элемент управления Barcode в панель инструментов, но получаю сообщение об ошибке:

В папке «C: \ Program Files (x86) \ Sax.net \ Barcodes \ Deploy \ Sax.Barcodes.dll» нет компонентов, которые можно поместить в панель инструментов.

Есть идеи, как лучше отладить происходящее?

Редактировать: Я попытался скомпилировать с платформой, установленной на x86, и получаю ту же ошибку.Я пробовал под WinXP на той же системе, которая всегда была в состоянии собрать версию .Net 1.1, и она терпит неудачу с той же ошибкой.Если я включаю файл license.licx в проект, то получаю ошибку во время компиляции.Если я не включу его, то получу ошибку лицензии во время выполнения.

Ответы [ 3 ]

1 голос
/ 24 августа 2011

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

Текст в Licenses.licx необходимо изменить для более новых версий .Net. Вместо "Sax.Barcodes.Barcode" попробуйте использовать "Sax.Barcodes.Barcode,Sax.Barcodes" (без кавычек). Конечно, убедитесь, что вы установили пакет с серийным номером, включите файлы DLL и Licenses.licx в ваш проект. Надеюсь, это спасет кого-то еще от головной боли!

1 голос
/ 20 марта 2014

Я деконструировал код DLL и обнаружил некоторые странные вещи.

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

Во-вторых, если ваше имя пользователя на этом компьютере - "CHUCKG" или "MARKH", это, вероятно, позволит вампрямо из-за жестко закодированных значений.

В-третьих, и вот ответ, вам нужно запустить Visual Studio от имени администратора, чтобы он мог правильно найти ключи реестра / лицензию.

Спасибо @sontek за повышение квалификации.

0 голосов
/ 17 февраля 2011

Знаете ли вы, работает ли ваш проект как 32-разрядный или 64-разрядный? В VS, если вы переходите к свойствам проекта для вашего .exe-проекта (предполагая, что это приложение Windows), на вкладке сборки, если для "target для платформы" установлено значение "любой ЦП", попробуйте изменить его на "x86" и перекомпиляции. (Я смотрю на VS2010, в VS2008 диалог может выглядеть немного иначе.)

Process Monitor от Sysinternals (http://technet.microsoft.com/en-us/sysinternals/bb896645) может помочь вам определить, где компонент ищет лицензию. Он будет контролировать всю файловую систему и доступ к реестру, и вы сможете увидеть, где компонент ищет для его файла лицензии.

...