|
v7: iKeyAPI.dll (отсутствует CLSID) | ☑ | ||
---|---|---|---|---|
0
adm1nb3k
21.12.15
✎
20:23
|
Здравствуйте. Есть токен iKey SafeNet. Драйвер установлен. Хочу подключить iKeyAPI.dll и оттуда взят MD5_Hash. При подключение к базу, выходить отсутствует CLSID. Куда копать?
http://rghost.ru/7dBmthbL4 |
|||
1
Это_mike
21.12.15
✎
20:32
|
Зарегистрировать длл? Запустить 1с с правами админа?
|
|||
2
adm1nb3k
21.12.15
✎
20:48
|
(1). Пробовал. Без толку.
|
|||
3
MadDAD
21.12.15
✎
22:30
|
Судя по всему должны присутствовать все эти файлы
\\System\\WINSCARD.DLL \\System\\rnbtkn95.sys \\System32\\Drivers\\rnbtoken.sys \\System32\\Drivers\\usbrbtkn.sys Т.е. драйвер должен быть установлен корректно родным установщиком. |
|||
4
MadDAD
21.12.15
✎
22:32
|
Да, и попробуйте запустить регистрацию библиотеки, когда токен в гнезде.
|
|||
5
adm1nb3k
21.12.15
✎
23:06
|
(3)
Драйвер установлен корректно и работает другой приложением. Все файлы присутствуют в указанных местах. |
|||
6
MadDAD
22.12.15
✎
10:51
|
(4) ОС 64х-битная?
|
|||
7
NikVars
22.12.15
✎
10:56
|
(5) А как связана установка драйвера с регистрацией библиотек выдающих CLSID?
|
|||
8
NikVars
22.12.15
✎
10:58
|
(2) Пользователю даешь права админа временно. Не запускаешь что-то под правами админа. А именно, этому пользователю даешь права админа. Входишь в 1С один раз. Проверяешь работу своих библиотек и подключений. Если все работает. Забираешь у этого пользователя админские права. Перезагружаешь биби. Проверяешь снова.
|
|||
9
MadDAD
22.12.15
✎
11:05
|
(7) Это COM-сервер, напрямую связанный с драйвером токена. И для работы драйвер должен быть утсановлен. У него в процедуре регистрации явно указна проверка веток реестра, наличия файлов драйвера и присутствия веток оборудования в реестре. Если чего- то нет - вываливает ошибку регистрации, а она вываливается в сообщение об отсутствии CLSID
|
|||
10
NikVars
22.12.15
✎
11:08
|
(9) 1С 7.7 работает с COM?
|
|||
11
MadDAD
22.12.15
✎
11:13
|
(10) Работает. Регистрируем COM-Сервер и потом СоздатьОбъект("ИмяСервера"). вообще 7.7 не очень различает СOM и OLE. Можно подключать ActiveX'ы.
|
|||
12
NikVars
22.12.15
✎
11:21
|
(11) В части проблемы (0) - все однозначно. Нужно регить длл. 1С пофик на все драйверные установки. Драйвер ведь не ставится для нужд 1С. Если бы это было так, то не было бы этой ветки.
|
|||
13
MadDAD
22.12.15
✎
11:36
|
(12) 1C-то пофик, но для регистрации DLL вызывается прроцедура "DllRegisterServer" из самой DLL. И тут возникет несколько вопросов:
1. Нормально ли работает этот Com-сервер с другими приложениями? Например если попытаться создать объект в vbs-скрипте или в макросе VBA? Если все ОК - то проблема однозначно в 1С. 2. Если система 64-битная, то регистрировать библиотеку нужно соответствующим образом (C:\Windows\SYSWOW64\Regsvr.exe) т.к. библиотека 32-х битная. |
|||
14
NikVars
22.12.15
✎
11:38
|
(13) Ты ж сказал, что 1С 7.7 работает с COM, значит - работает!
|
|||
15
MadDAD
22.12.15
✎
11:40
|
(14) 1c работает с COM вообще. А тут COM-сервер не может зарегистрироваться. Вопрос - почему. Ответ не узнаем пока не придет ТС
|
|||
16
NikVars
22.12.15
✎
11:42
|
(15) Речь про 1С 7.7. Тут все твои доводы - мимо. Даже 1С 8 цепляется к 1С 7.7 увы не по COM.
|
|||
17
adm1nb3k
22.12.15
✎
13:09
|
(6). Да, система х64 Windows 7.
(13). DLL я регистрировал DllRegisterServer. Все файлы находиться на (C:\Windows\SYSWOW64\Regsvr.exe). |
|||
18
MadDAD
22.12.15
✎
13:14
|
Вообщем поковырялся с библиотекой, мутная она какая-то. Она при регистрации не пишет в реестр ни ProgID ни CLSID. Вообще не регистрируется как COM-сервер. При этом возвращает статус регистрации - 1.
Вместо этого создает ветку в SoftWare и пишет туда свою версию. Процедуры это не методы COM-Объекта а просто экспортируемые процедуры. Из этого делаю вывод что использовать её в качестве COM не получится, только писать обертку на чем нибудь. Или воспользоваться DynWrapX.dll |
|||
19
MadDAD
22.12.15
✎
13:16
|
(17) Если требуется только вычислить MD5 то есть пути проще, если нужно взаимодействовать с токеном, то придется все-таки дергать экспортируемые методы.
|
|||
20
adm1nb3k
22.12.15
✎
13:22
|
http://www.ipotekabank.uz/upload/IKEYALL.EXE тут есть драйвер этого токена.
Задача состоится в том, чтобы вытащит из этого токена MD5. |
|||
21
MadDAD
22.12.15
✎
13:33
|
(20) А есть приницпиальное отличие реализации MD5 в этой библиотеке? На сколько я вижу для вычисления хэша она не обращается к токену.
|
|||
22
adm1nb3k
22.12.15
✎
13:43
|
(21) Честно скажу, что я даже не знаю, как из этого токена взят данные. Просто ковырялся файлах токена и нашел этот файл. Думал что достаточно подключит этот DLL и качать оттуда данные.
|
|||
23
NikVars
22.12.15
✎
14:24
|
(17) Может нужно было регистрировать через
C:\Windows\SYSWOW64\Regsvr32.exe? |
|||
24
MadDAD
22.12.15
✎
14:24
|
(22) Просто не получится. Однозначено нужно делать обертку, хотя бы при помощи DynWrapX
|
|||
25
MadDAD
22.12.15
✎
14:58
|
Как-то так
[code] Функция Из_10_В_16(Знач Значение=0) Экспорт Нотация = 16; Значение = Число(Значение); Если Значение<=0 Тогда Возврат("0"); КонецЕсли; Значение=Цел(Значение); Результат=""; Пока Значение>0 Цикл Результат=Сред("0123456789ABCDEF",Значение%Нотация+1, 1)+Результат; Значение=Цел(Значение/Нотация) ; КонецЦикла; Возврат Результат; КонецФункции //******************************************* Функция ПолучитьHex(Исх) Результат = ""; Для Счетчик = 1 по СтрДлина(Исх) Цикл байт = Из_10_В_16(КодСимв(Сред(Исх, Счетчик,1))); Результат = Результат+ " " + байт; КонецЦикла; Возврат Результат; КонецФункции //******************************************* Процедура Сформировать() iKeyApi = СоздатьОбъект("DynamicWrapperX"); iKeyApi.Register("ikeyapi.dll", "MD5_Hash", "i=sls" ,"r=s"); Htp = ""; Htp = iKeyApi.MD5_Hash("Тестовая строка", 8, Htp); MD5 = ПолучитьHex(Htp); Сообщить(MD5); КонецПроцедуры [/code] |
|||
26
MadDAD
22.12.15
✎
15:01
|
(22)И так делаем для каждой экспортируемой функции. Думаю что будет непросто, учитывая что токен - это сертификаты, ввод пин-кода и пр. Зависит от того что конкретно нужно от токена в 1С.
|
|||
27
adm1nb3k
22.12.15
✎
15:04
|
(23) Пробовал.
|
|||
28
MadDAD
22.12.15
✎
15:07
|
(25) https://cloud.mail.ru/public/5jFM/144rit3km dynwrapx.dll
https://cloud.mail.ru/public/Csiu/gHovCrtKs iKeyApi.ert |
|||
29
NikVars
22.12.15
✎
15:10
|
(27) А (8) пробовал?
|
|||
30
MadDAD
23.12.15
✎
08:56
|
(29) Никакие способы регистрирования не помогут. Регистрация dll проходит нормально (как минимум у меня оно отработало). Но как показало изучение под IDA и Olly процедура DllRegisterServer не выполняет регистрации COM-сервера. Т.е. эта библиотека хоть и делает вид что она COM, на самом деле им не является. И нет никаких способов заставить ее работать как COM-сервер, кроме как написать обертку, что я и продемонстрировал в примерной обработке выше. Там выполняется процедура MD5_HASH из нее. Это обычный экспортируемый метод.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |