Найти путь до dll от COM Server зная ProgID | |
---|---|
AdamAry Сообщений: 843 Дата регистрации: 14.12.2015 |
Привет всем.
Как найти путь до dll от COM Server зная ProgID вручную и программно? Исправлено 2 раз(а). Последнее : AdamAry, 17.03.17 13:02 |
Re: Найти путь до dll от COM Server зная ProgID | |
---|---|
Igor Korolyov Автор Сообщений: 34580 Дата регистрации: 28.05.2002 |
Смотря как она зарегистрирована в реестре... Если напрямую, без использования механизма Advertisement имеющегося в системе установки Windows Installer, то процесс поиска dll сравнительно несложен.
В HKCR ищется ProgID - в нём в ветке CLSID значение по умолчанию (это и есть CLSID данного компонента). По этому значению ищется ветка в HKCR\CLSID\{....} - это собственно ветка описания установленного компонента. Далее в зависимости от типа ком-сервера в подветке InprocServer32, или LocalServer32 будет значение по умолчанию с путём к dll/ocx/exe файлу экспортирующему класс данного ком-сервера. Для .net-овских классов публикуемых посредством regasm структура будет другой. Вообще такого рода информацию редко когда нужно выяснять... ------------------ WBR, Igor |
Re: Найти путь до dll от COM Server зная ProgID | |
---|---|
AdamAry Сообщений: 843 Дата регистрации: 14.12.2015 |
Спасибо.
Согласен, редко, но иногда необходимо. Интересно, почему такая примитивнейшая задача требует таких сложных манипуляций, это что в штатах одни дауны и не кому больше писать программы или все нормальные люди там занимаются чем угодно но не программированием или там запрет нормальным людям писать программы или специально усложняются простейшие вещи чтобы отбить охоту у нормальных людей заниматься программированием? Механизм Advertisement так понимаю только для NET программ или она может использоваться и для неуправляемых dll? В моём случае это не NET программа, a написанная на неуправляемом C++ dll ~ COM Server. Исправлено 5 раз(а). Последнее : AdamAry, 17.03.17 13:49 |
Re: Найти путь до dll от COM Server зная ProgID | |
---|---|
ssa Сообщений: 13007 Откуда: Москва Дата регистрации: 23.03.2005 |
Чем меньше человек разбирается в теме, тем больше он мнит себя знатоком того, что и как должно быть в этой теме и свысока оценивать действия других. Самому-то для чего понадобилось? А точно нужно именно это? ------------------ Лень - это неосознанная мудрость. |
Re: Найти путь до dll от COM Server зная ProgID | |
---|---|
AdamAry Сообщений: 843 Дата регистрации: 14.12.2015 |
Согласен, но "На всякого мудреца довольно простоты" и всё таки как не крути
этот крутой "Гениальный" код ~ гкод всё равно всего лишь гкод. И этот гкод даже в студию нести не нужно он у каждого на компе. Знатоком себя не считаю, поэтому и на форуме, истинные знатоки похоже форумы не посещают, наверное они вообще не делают ошибок и пишут преидеальнейший код. На всякий случай. Не точно. На всякий случай: 1. у меня есть две DLL с одинаковым названием но в разных папках, и надо знать программно которая сейчас текущая, выясняя папку где гнездится dll, так как могу и забыть какая текущая, программно это удобней т.к. это получается в один клик, чем ковыряться в реестре. Не точно: 2. есть одна DLL которую админы могут поставить в любую папку и зарегистрировать, и может появиться необходимость выяснения пути этой папки программнo, зная лишь ProgID этого COM объекта. Исправлено 14 раз(а). Последнее : AdamAry, 23.03.17 14:40 |
Re: Найти путь до dll от COM Server зная ProgID | |
---|---|
Igor Korolyov Автор Сообщений: 34580 Дата регистрации: 28.05.2002 |
Потому что она лишь кажется тебе примитивной Это ОЧЕНЬ непростая система - там и разные типы компонент, варианты активации, DCOM, потоковые модели, библиотеки типов, интерфейсы... Я привёл ссылку - это механизм штатной системы инсталляции (установки) программ в винде. Позволяет не копировать физически файлы до появления первой надобности в них, плюс отслеживает целостность установки - т.е. восстанавливает повреждённые/удалённые файлы. К .NET не имеет никакого отношения. ------------------ WBR, Igor |
Re: Найти путь до dll от COM Server зная ProgID | |
---|---|
AdamAry Сообщений: 843 Дата регистрации: 14.12.2015 |
Благодарю Игорь. Согласен с тобой:
Создаём COM объект используя ProgID = "AIN.DV":
Теперь по CLSID находим InprocServer32, который и есть путь. Путаница может возникнуть в 64 битных ОС, не так ли?
Вопрос как использовать этот код в 64 битных ОС? Когда и где мы должны вставлять Wow6432Node? HKLM = HKEY_LOCAL_MACHINE Исправлено 12 раз(а). Последнее : AdamAry, 23.03.17 09:54 |
Re: Найти путь до dll от COM Server зная ProgID | |
---|---|
AdamAry Сообщений: 843 Дата регистрации: 14.12.2015 |
Спасибо.
Надеюсь зарегистрирована напрямую (хотя как узнать напрямую или нет: вручную и программно). Так вот правильно?: Какие подводные камни есть при использовании этих функций если не напрямую, если это 64 битная ОС, если это 32 битная dll в 64 bit OS? Цитата::
А как выяснить напрямую или нет?: Цитата: Исправлено 5 раз(а). Последнее : AdamAry, 23.03.17 14:39 |
Re: Найти путь до dll от COM Server зная ProgID | |
---|---|
AdamAry Сообщений: 843 Дата регистрации: 14.12.2015 |
Спасибо.
Цитата:А нет универсального подхода ко всем этим примочкам или нужно к каждому типу отдельный подход? И где это описано? Исправлено 2 раз(а). Последнее : AdamAry, 23.03.17 14:39 |
Re: Найти путь до dll от COM Server зная ProgID | |
---|---|
Igor Korolyov Автор Сообщений: 34580 Дата регистрации: 28.05.2002 |
Да, только если компонент прописан в манифесте приложения а не в реестре, то толку от этого будет мало... Технология RegFreeCOM позволяет использовать com классы без их регистрации в реестре. Сразу же после HKEY_CLASSES_ROOT - если требуется на 64-разрядной ОС получить информацию о 32-разрядной компоненте. Для advertized компонент по идее путь всё равно указывается - просто самой dll по этому путь может не быть... В реестре для них дополнительные "зашифрованные" значения прописаны - чтобы при обращении сработал установщик. ------------------ WBR, Igor |
Re: Найти путь до dll от COM Server зная ProgID | |
---|---|
AdamAry Сообщений: 843 Дата регистрации: 14.12.2015 |
Как выяснить?: напрямую или нет?: 1. Визуально 2. Программно |
Re: Найти путь до dll от COM Server зная ProgID | |
---|---|
Igor Korolyov Автор Сообщений: 34580 Дата регистрации: 28.05.2002 |
Не в курсе, никогда такой нужды не испытывал Наверное по этому хитрому дополнительному ключу с "абракадаброй" и можно. Только не нужно это никогда
------------------ WBR, Igor |
© 2000-2024 Fox Club  |