Bug 3066

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
Вот такие отладочные сообщения 

> > 1С отображает на экране свое окно, а затем выдает сначала сообщение
> > "HASP HL Protection System
> > Error 1009: Cannot open HASP HL drivers"
> > и затем по нажатию "ОК" еще одно сообщение
> > "Не найден ключ защиты Континент:Страхование!!!".

> > При этом в окне служебных сообщений:
> > {МодульПриложения(617)}: Ошибка при вызове конструктора (СОМОбъект):
> > Unknown error 0x800401F3
Comment 1 Vitaly Lipatov 2008-12-31 16:35:11 MSK
Так же ошибка при регистрации regsvr32 Kont.dll
Проблема в том, что DLL обращается к драйверам локального ключа, несмотря на то, что используется сетевой ключ. Проверили на Windows удалением драйверов.
Ждём реализации загрузки драйверов.
Comment 2 Vitaly Lipatov 2009-01-03 19:09:22 MSK
Бутылка 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
Comment 3 Vitaly Lipatov 2009-01-03 19:09:35 MSK
*** Bug 3176 has been marked as a duplicate of this bug. ***
Comment 4 Александр Морозов 2009-01-15 15:14:05 MSK
Если загружен драйвер, создающий устройство \\.\FEnteDev, то
winexp regsvr32 Kont.dll
выводит ошибку "Error 7: HASP HL Key not found" вместо "Error 1009: Cannot open HASP HL drivers" и в логе WINEDEBUG=+file появляется nethasp.ini
Comment 5 Александр Морозов 2009-01-15 19:02:20 MSK
Добавил драйвер, создающий устройство \\.\FEnteDev, в cvs-репозиторий wine-etersoft.
Comment 6 Александр Морозов 2009-01-15 20:36:55 MSK
При использовании упомянутого выше драйвера и наличии ключа в 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

Надо протестировать с новой закрытой частью.
Comment 7 Andrey Vusik 2009-01-30 18:15:23 MSK
Сборка 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
Comment 8 Andrey Vusik 2009-01-30 18:20:10 MSK
Но при запуске по-прежнему
"Не найден ключ защиты Континент:Страхование!!!"
Comment 9 Andrey Vusik 2009-01-30 18:41:18 MSK
На 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 (и пингуется)

Но всё равно пишет, что ключа нет.
Comment 10 Денис Баранов 2009-02-09 15:23:51 MSK
Kont.dll регистрируется успешно.
Но при попытке запустить конфигурацию вылетает та же ошибка что и была: {МодульПриложения(617)}: Ошибка при вызове конструктора (СОМОбъект): Unknown error 0x800401F3

В этом вся проблема.
Comment 11 Денис Баранов 2009-02-09 15:25:13 MSK
В исходниках в файле winerror.c нашел такую строчку : 
#define CO_E_CLASSSTRING    _HRESULT_TYPEDEF_(0x800401F3L)

Надо разбираться что и как.
Comment 12 Денис Баранов 2009-02-09 15:34:18 MSK
В этих местах видимо происходит ошибка:

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)
Comment 13 Денис Баранов 2009-02-09 15:39:18 MSK
Ошибку по прежнему можно увидеть в бутылке: rt/9051
Comment 14 Денис Баранов 2009-03-05 20:40:47 MSK
ПРоверил еще раз.
Дело не в ключе. 
1.0.10 eter11/eter7
Comment 15 Денис Баранов 2009-03-17 11:24:39 MSK
Повышаю приоритет. Нужно сделать.
Comment 16 Константин Кондратюк 2009-03-17 14:15:37 MSK
Поведение поменялось, когда, пробуя подставить виндовые библиотеки, зарегистрировал 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С сообщает о вощникшей ошибке и предлагает закрыть программу.
Comment 17 Vitaly Lipatov 2009-03-20 15:35:20 MSK
(In reply to comment #16)
Предлагаю дальнейшее обсуждение по WBEM вести в # 3707.
Comment 18 Константин Кондратюк 2009-03-21 02:22:47 MSK
Добавили в wine библиотеку wbemdisp. Пользы это никакой не принесло.

В библеотеке сделаны ISWbemLocator и ISWbemServices. 
Ещё запрашивается IConnectionPointContainer и несколько других интерфейсов.

На данный момент падает в модуле 1С после обращения к IClassFactory_QueryInterface с riid, равным NULL (!)
Так не бывает, на этом идеи пока закончились...
Comment 19 Константин Кондратюк 2009-03-21 02:24:22 MSK
Добавляемый код выложу куда-нибудь отдельно. Коммитить его на данном этапе - пустое занятие, dll не работоспособна. Да и мусорка в коде функций та ещё...
Comment 20 Константин Кондратюк 2009-03-23 15:00:39 MSK
Решаем wbem в другой баге. После реализации wbemdisp.dll нужно проверить.
Comment 21 Константин Кондратюк 2009-03-24 18:21:39 MSK
Нет оснований считать, что ключ защиты не работает. Проблема загрузки конфигурации упирается в другие методы защиты конфигурации.