Summary: | поддержка драйвера системы лицензирования и защиты конфигураций платформы <1С:Предприятие>,модуль обмена данными ( NKey.sys ) | ||
---|---|---|---|
Product: | WINE@Etersoft | Reporter: | Денис Баранов <baraka> |
Component: | Ключи защиты ; Системы защиты ; Файл лицензии | Assignee: | Александр Морозов <amorozov> |
Status: | CLOSED WONTFIX | QA Contact: | Marat Sharipov <regan> |
Severity: | major | ||
Priority: | P2 | CC: | lav |
Version: | 1.0.10 | ||
Target Milestone: | --- | ||
Hardware: | PC | ||
OS: | All | ||
Whiteboard: | |||
Заявки RT: | 9730 | Связано с: | |
Дата напоминания: | |||
Bug Depends on: | 2887, 4003 | ||
Bug Blocks: | 4544, 5991 | ||
Attachments: | Записи реестра для работы с nkey.sys |
Description
Денис Баранов
2009-04-17 13:16:26 MSD
Оказывается, хак для драйверов Катран был сломан. Отправил в рассылку исправление. Created attachment 1195 [details]
Записи реестра для работы с nkey.sys
Для работы с nkey.sys надо скопировать его в windows/system32/drivers, импортировать в реестр приаттаченный reg-файл и выполнить wineserver -k Что касается /var/ftp/pvt/Windows/Keys/KATRAN/Protection.zip, setup.exe отрабатывает нормально, если не устанавливать драйвер защиты конфигураций. По информации от разработчиков драйвер NKey.sys не работает с оборудованием. Он предназначен для организии обмена данными между компонентами системы. Так что использовать reg-файл из комментария #2 не надо, он делает неправильные вещи. Реализовал загрузку драйвера. Внёс изменения в process_ioctl, предотвращающие падение LicenceServer.exe и LicenceTest.exe. Защищённая конфигурация (/var/ftp/pvt/Windows/Keys/katran_test) при запуске выводит: {МодульПриложения(17)}: Ошибка при вызове метода контекста (ЗагрузитьВнешнююКомпоненту): Ошибка при загрузке внешней компоненты Причина ошибки, по-видимому, в том, что DllGetClassObject({4657278a-411b-11d2-839a-00c04fd918d0}, &IID_IClassFactory, &ptr) из LicenceAddIn.dll возращает CLASS_E_CLASSNOTAVAILABLE. Написал простую программу, вызывающую эту функцию. В ней возвращается S_OK. В последнем сообщении я перепутал CLSID. Вместо 4657278a-411b-11d2-839a-00c04fd918d0 должно быть 92d9aabb-3502-40c9-899b-212b97e21ee1. Если перед вызовом DllGetClassObject записать по смещению 0xa215c относительно адреса apartment_loaded_dll->dll->DllGetClassObject, то, что помещается по смещению 0xbb9b8 от начала LicenceAddIn.dll после вызова CoLoadLibrary, то при запуске 1С появляется окно "Установка связи с сервером лицензий". После такой правки указателей при выходе из 1С появляется окно с сообщением "Exception EInvalidPointer in module LicenceAddIn.dll at 00004235" Проблема вызвана тем, что LicenceAddIn.dll загружается 2 раза: 1-й раз - по длинному имени в CoLoadLibrary, а 2-й - как LICE~L20.DLL в CoCreateInstance. Проблема проявляется, только если в модуле приложения в функции ЗапускМенеджераЛицензий() прописано длинное имя. Убрал таймауты у функций, обслуживающих ввод-вывод для USB-устройств. Теперь при запуске 1С появляется окно "Обработка Проверка лицензирования" и сообщение "СистемаЛицензирования : Системная ошибка". Это же сообщение появляется при нажатии на кнопку "Создать обработку". Остальные кнопки работают нормально. Исправил баг с повторной загрузкой LicenceAddIn.dll. Закоммитил NKey.sys в закрытую часть. Новая версия СЛК (/var/ftp/pvt/Windows/Keys/katran_test/Common.zip) работает без nkey.sys. Проверить на последнем WINE что с ключом. /var/ftp/pvt/Windows/Keys/katran_test/Common.zip) WINE@Etersoft 1.0 Network 1.0.12-eter8/17 На nkey.sys не жалуется Принята Закрываю. |