Информация о COM объекте исчезает из реестра
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Информация о COM объекте исчезает из реестра Expand / Collapse
Автор
Сообщение
19.12.2006 17:27
Junior Member

Junior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior Member

участник
Last Login: 19.12.2006 17:26
Сообщ.: 10, Visits: 71
Доброе время суток!

Никто не сталкивался с проблемой, когда (обычно на WinXP) информация о COM объекте (т.е. результаты regsvr32 object.dll) самопроизвольно исчезают из реестра через какое-то время (через одну/неск. недель, например)?

На моей машине все в порядке, но у некоторых пользователей (к машинам которых доступа нет) такая проблема есть. Может, у них стоит какой-то софт, который периодически чистит реестр и "с водой выплескивает и ребенка"? И почему это может происходить, может, нужно как-то по-другому регистрировать COM объект чтобы такие утилиты его не обижали?

Проверить эти догадки я, увы, не могу, т.к. связаться с пользователями тоже нельзя (я разрабатываю саму COM библиотеку, а приложение на основе этой библиотеки разрабатывает совсем другая фирма, и уже клиенты этой фирмы являются пользователями; так что в лучшем случае будет испорченный телефон).

Сообщ. #909060
31.12.2006 18:20


Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 20.01.2008 13:51
Сообщ.: 216, Visits: 2 222
Возможно, что просто происходит восстановление контрольной точки ОС (которая создавалась до регистрации).
Сообщ. #909381
31.12.2006 19:30


Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

модератор
Last Login: 13.12.2007 18:51
Сообщ.: 3 047, Visits: 33 391
Насколько помню, если COM-сервер положить в каталог COM-клиента, то можно обойтись и без регистрации: если COM-сервер поддерживает OleSelfRegister, то регистрация произойдёт автоматически.

Иными словами: попробуй свою ActiveX DLL-ку положить в тот же каталог, в котором лежит EXE-шник (или другая DLL-ка), имеющий ссылку на эту DLL-ку. Просто положи и не регистрируй. И попробуй запуститься.

Если честно - никогда не пробовал. Просто где-то мельком слышал. Может и враки... скорее всего - именно враки :))

PS: если COM-клиента переписать под позднее связывание - то твоя проблема отпадает автоматом: пробуешь сделать CreateObject(<ProgID>), и при ошибке (зная, где именно лежит твой COM-сервер) вызываешь LoadLibrary(<ComServerPath>) и затем дёргаешь за функцию DllRegisterServer (которая - как и DllUnRegisterServer - всегда экспортируется ActiveX-компонентами, созданными под VB6); как надо дёргать - см. исходники "VB Setup Wizard". Кстати, последнее можно сделать проще - при помощи подхода, описанного в статье MSDN KB173407 (даже не придётся вызывать LoadLibrary и т.д.).


While (!Life.EOF) { You.Money ++; You.Girls.Add(new Girl(90,60,90)); BeHappy(); }
Сообщ. #909384
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl, Comanche, Alexey Spirin

Время GMT +3:00, Сейчас 5:42