| 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 не жалуется Принята Закрываю. |