| Summary: | Не работает ключ защиты HASP конфигурации 1С Континент-страхование | ||
|---|---|---|---|
| Product: | WINE@Etersoft | Reporter: | Александр Пликус <pav> |
| Component: | Ключи защиты ; Системы защиты ; Файл лицензии | Assignee: | Константин Кондратюк <kondratyuk> |
| Status: | CLOSED FIXED | QA Contact: | |
| Severity: | critical | ||
| Priority: | P1 | CC: | amorozov, baraka, ivan, kondratyuk, lav, night |
| Version: | 1.0.9 | ||
| Target Milestone: | --- | ||
| Hardware: | PC | ||
| OS: | All | ||
| Whiteboard: | |||
| Заявки RT: | 9051 | Связано с: | |
| Дата напоминания: | |||
| Bug Depends on: | 1879, 3194 | ||
| Bug Blocks: | 468, 1217, 3723 | ||
|
Description
Александр Пликус
2008-12-04 12:28:16 MSK
Так же ошибка при регистрации regsvr32 Kont.dll Проблема в том, что DLL обращается к драйверам локального ключа, несмотря на то, что используется сетевой ключ. Проверили на Windows удалением драйверов. Ждём реализации загрузки драйверов. Бутылка rt/9051, конфигурация лежит в c:\Conf там же и dll'ка Ключ сетевой, сейчас на lin-test. ------- Комментарий #2 от Александр Морозов 2008-12-30 14:07:03 При выполнении "regsvr32 Kont.dll" при эмуляции Windows XP делаются попытки открыть \\.\NTICE1340, \\.\NTICE, \\.\FEnteDev, при эмуляции Windows 98 - \\.\SIWVID, \\.\HARDLOCK.VXD *** Bug 3176 has been marked as a duplicate of this bug. *** Если загружен драйвер, создающий устройство \\.\FEnteDev, то winexp regsvr32 Kont.dll выводит ошибку "Error 7: HASP HL Key not found" вместо "Error 1009: Cannot open HASP HL drivers" и в логе WINEDEBUG=+file появляется nethasp.ini Добавил драйвер, создающий устройство \\.\FEnteDev, в cvs-репозиторий wine-etersoft. При использовании упомянутого выше драйвера и наличии ключа в lin-test DLL регистрируется успешно:
<wine@cellar bottle rt/9051>$ winexp regsvr32 Kont.dll
Running in NT environment...
fixme:ntoskrnl:IoRegisterDeviceInterface 0x111938 {608225bc-766b-40a8-b8a4-d96bc999ae35} <null> 0x111b38
fixme:ntoskrnl:IoRegisterDeviceInterface 0x111988 {10d60713-fb4c-4bb1-941b-44b79d25af8b} <null> 0x111404
fixme:ntoskrnl:IoSetDeviceInterfaceState (null) 1
Successfully registered DLL Kont.dll
Надо протестировать с новой закрытой частью.
Сборка 40/17
Всё работает.
<wine@cellar bottle rt/9051>$ winexp regsvr32 Kont.dll
Running in NT environment...
fixme:ntoskrnl:IoRegisterDeviceInterface 0x111938 {608225bc-766b-40a8-b8a4-d96bc999ae35} <null> 0x111b38
fixme:ntoskrnl:IoRegisterDeviceInterface 0x111988 {10d60713-fb4c-4bb1-941b-44b79d25af8b} <null> 0x111404
fixme:ntoskrnl:IoSetDeviceInterfaceState (null) 1
Successfully registered DLL Kont.dll
Но при запуске по-прежнему "Не найден ключ защиты Континент:Страхование!!!" На lin-test ключ стоит и работает:
HASP Net at host (see NETHASP.INI) (press Ctrl-C to break):
..... -- active logins: 1
-- max logins: 5
-- key type: HASP4 Net 5 licenses
-- activations: 65535
[ 4] 1C:Accountancy v7.7 (simple and network)
В бутылке rt/9051 в nethasp.ini прописан lin-test (и пингуется)
Но всё равно пишет, что ключа нет.
Kont.dll регистрируется успешно.
Но при попытке запустить конфигурацию вылетает та же ошибка что и была: {МодульПриложения(617)}: Ошибка при вызове конструктора (СОМОбъект): Unknown error 0x800401F3
В этом вся проблема.
В исходниках в файле winerror.c нашел такую строчку : #define CO_E_CLASSSTRING _HRESULT_TYPEDEF_(0x800401F3L) Надо разбираться что и как. В этих местах видимо происходит ошибка: trace:reg:NtOpenKey (0x20c,L"WbemScripting.SWbemLocator\\CLSID",f003f,0x32e6c0) trace:reg:NtOpenKey <- (nil) ... trace:reg:NtOpenKey (0x20c,L"winmgmts\\CLSID",f003f,0x32d9f4) trace:reg:NtOpenKey <- (nil) Ошибку по прежнему можно увидеть в бутылке: rt/9051 ПРоверил еще раз. Дело не в ключе. 1.0.10 eter11/eter7 Повышаю приоритет. Нужно сделать. Поведение поменялось, когда, пробуя подставить виндовые библиотеки, зарегистрировал wbemdisp.dll - необходимый ключ хранится в ней.
Теперь - ошибка:
err:ole:apartment_getclassobject DllGetClassObject returned error 0x80004002
err:ole:create_server class {172bddf8-ceea-11d1-8b05-00600806d9b6} not registered
fixme:ole:CoGetClassObject CLSCTX_REMOTE_SERVER not supported
err:ole:CoGetClassObject no class object {172bddf8-ceea-11d1-8b05-00600806d9b6} could be created for context 0x15
Оболочка 1С сообщает о вощникшей ошибке и предлагает закрыть программу.
(In reply to comment #16) Предлагаю дальнейшее обсуждение по WBEM вести в # 3707. Добавили в wine библиотеку wbemdisp. Пользы это никакой не принесло. В библеотеке сделаны ISWbemLocator и ISWbemServices. Ещё запрашивается IConnectionPointContainer и несколько других интерфейсов. На данный момент падает в модуле 1С после обращения к IClassFactory_QueryInterface с riid, равным NULL (!) Так не бывает, на этом идеи пока закончились... Добавляемый код выложу куда-нибудь отдельно. Коммитить его на данном этапе - пустое занятие, dll не работоспособна. Да и мусорка в коде функций та ещё... Решаем wbem в другой баге. После реализации wbemdisp.dll нужно проверить. Нет оснований считать, что ключ защиты не работает. Проблема загрузки конфигурации упирается в другие методы защиты конфигурации. |