Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.08.22;
Скачать: [xml.tar.bz2];

Вниз

EOleSysError "Class not registered"   Найти похожие ветки 

 
Aldor_   (2004-08-06 13:47) [0]

Программа под WinXP работает нормально, а под Win2K вылетает сабж. Подозрвеваю (нет возможности проверить точнее), что ошибка происходит на строке
CreateComObject(CLASS_EnumInstalledApps) as IEnumInstalledApps (строка из модуля, ковертнутого из IDL-файла)
Хотя в справке сказано, что поддерживаются винды 98-XP. Или тогда о чем сигнализирует сабж?


 
Digitman ©   (2004-08-06 13:50) [1]


> о чем сигнализирует сабж?


о том что фабрика класса CLASS_EnumInstalledApps не зарегистрирована в реестре той ОС, в среде которой предпринимается попытка создать экз-р этого класса


 
Aldor_   (2004-08-06 14:17) [2]

Digitman ©   (06.08.04 13:50) [1]
Значть дело именно в ОС и ничего здесь поделать нельзя


 
Digitman ©   (2004-08-06 14:20) [3]

ерунда полная
убедись что ФК действительно зарегистрирована в реестре


 
Aldor_   (2004-08-06 14:44) [4]

Digitman ©   (06.08.04 14:20) [3]

 Извиняюсь за явно дилетантский вопрос, но как в этом убедиться? И если окажется, что не зарегистрен, то как зарегистрить?


 
Digitman ©   (2004-08-06 14:47) [5]

выполни ком.строку

regsvr32 myfabric.dll


 
Гаврила ©   (2004-08-06 15:07) [6]

Это что за класс то ? В MSDN про него ничего нет.
Свой собственный чтоли ?


 
Erik1   (2004-08-06 15:13) [7]

Возможно чтото самопальное.


 
Aldor_   (2004-08-06 15:19) [8]

> Это что за класс то ? В MSDN про него ничего нет.
 Вообще-то странно, в msdn хорошо описана работа со списком установленных программ, и дается ссылка на idl-файл, где все соответствующие интерфейсы определены.
 Импортнул я этот idl-файл (shappmgrp.idl), а там интерфейсы с другими названиями (вот IEnumInstalledApps, например) и другими методами (хотя все очень похоже), пришлось по названиям методов догадываться, что вызывать.
 Вот такая вот фигня в синагоге творится. Была идея, что я наткнулся на старую информациб в msdn, но о новых интерфейс, как Вы тоже смогли убедиться тоже ничего в msdn неизвестно.

Digitman ©   (06.08.04 14:47) [5]
> выполни ком.строку regsvr32 myfabric.dll

LoadLibrary("myfabric.dll") failed - The specified module counld not be found


 
Digitman ©   (2004-08-06 15:24) [9]


> Aldor_   (06.08.04 15:19) [8]


)) ... да это к примеру я ! ... посчитал что библиотека с ФК - твоей разработки ..

ок

открой XXX_TLB.PAS, найди строчку, определяющую зн-е ид-ра CLASS_EnumInstalledApps, скопируй в буфер его значение (т.е. CLSID) и поищи его в реестре


 
Aldor_   (2004-08-06 15:34) [10]


> )) ... да это к примеру я ! ... посчитал что библиотека
> с ФК - твоей разработки ..


:))))))) а я еще удивлялся, какое название библиотеки странное :)


> открой XXX_TLB.PAS, найди строчку, определяющую зн-е ид-ра
> CLASS_EnumInstalledApps, скопируй в буфер его значение (т.е.
> CLSID) и поищи его в реестре

 На машине с WinXP, естественно, нашел, а вот на той, где Win2K - нет. Хотя, еще раз повторяю, в msdn написано, что поддержка этих интерфейсов начинается еще с Win98


 
Digitman ©   (2004-08-06 15:38) [11]

вот теперь открывай этот ключ в ХР и смотри, куда смотрит параметр InProcServer


 
VMcL ©   (2004-08-06 15:42) [12]

>>Digitman ©  (06.08.04 15:38) [11]

<offtopic>
 Пошаговый саппорт :))
</offtopic>


 
Aldor_   (2004-08-06 15:45) [13]


> вот теперь открывай этот ключ в ХР и смотри, куда смотрит
> параметр InProcServer

В {<CLSID>}\InProcServer32 параметр (Default) имеет значение System32\appwiz.cpl


 
Digitman ©   (2004-08-06 15:54) [14]


> Aldor_   (06.08.04 15:45) [13]


а теперь смотри, есть ли файл этого апплета в наличии в W2k - он обязан там быть !

ищи в реестре ссылки на строчку "appwiz.cpl"

у меня - Винтукей, и этот апплет присутствует и зарегистрирован в реестре так :

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{0B124F8C-91F0-11D1-B8B5-006008059382}\InProcServer32


 
Digitman ©   (2004-08-06 15:56) [15]


> VMcL ©   (06.08.04 15:42) [12]


ввязался же ... куда теперь деваться ... доведем уж слепого до цели !


 
Aldor_   (2004-08-06 16:02) [16]

Хм...


0B124F8F-91F0-11D1-B8B5-006008059382 - WinXP
0B124F8C-91F0-11D1-B8B5-006008059382 - Win2K


 и... эээ... что теперь, проверять в ран-тайм версию системы? А может CLSID еще и от сервис пака к сервис паку меняется?


 
Aldor_   (2004-08-06 16:03) [17]

>  доведем уж слепого до цели !

 :) Ну почему же слепого? Просто начинающего :)


 
Digitman ©   (2004-08-06 16:08) [18]


> Aldor_   (06.08.04 16:02) [16]


эээ... я никогда не вдавался в эти подробности, это уж ты сам выясняй

в дан. же случае попробуй поменять CLSID в XXX_TLB.PAS на реально зарегистрированный и попробуй создать объект и поработать с ним - вероятность совместимости интерфейсов должна быть явно не нулевая)


 
Aldor_   (2004-08-06 16:32) [19]

Подставил 2К-шное значение CLSID, запустил (под Win2K), ответила опять эксепшеном: "Class factory cannot suply requeated class". Так верить msdn или нет? (я об информации о поддержке разных ОС)


 
Digitman ©   (2004-08-06 16:51) [20]

значится, так ...

выкинь нафих то что ты получл с пом. импорта IDL

1. открой любой Делфи-проект
2. выполни меню Projects -> Import Type Library..
3. по кнопке Add выбери файл appwiz.cpl в сист.каталоге ОС
4. нажми кн. Create Unit

в рез-те у тебя будет создан файл SHAPPMGRLib_TLB.pas

повтори это для другой ОС, получи такой же файл для нее, сравни эти файлы

если они совпадают в части CLSID и декларируемых в них интерфейсов, то лажа, наверно - в использованном тобой IDL


 
Aldor_   (2004-08-06 16:58) [21]

Спасибо большое за консультацию, попробую, о результатах в этой ветке сообщу.


 
Бином Ньютоныч   (2004-08-06 17:04) [22]

Так и есть: в appwiz.cpl в TLB стоит
0B124F8F-91F0-11D1-B8B5-006008059382
а в реестре
0B124F8C-91F0-11D1-B8B5-006008059382

>Aldor_

Явно ошибка регистрации, исправь в реестре. Заодно и остальные GUID из этой библии проверь. И нам расскажи:)


 
Aldor_   (2004-08-07 06:54) [23]

Вот резулты импорта appwiz.cpl:

WinXP:

IID_IEnumInstalledApps: TGUID = "{1BC752E1-9046-11D1-B8B3-006008059382}";
CLASS_EnumInstalledApps: TGUID = "{0B124F8F-91F0-11D1-B8B5-006008059382}";
IID_IEnumPublishedApps: TGUID = "{0B124F8C-91F0-11D1-B8B5-006008059382}";


Win2K:

IID_IEnumInstalledApps: TGUID = "{1BC752E1-9046-11D1-B8B3-006008059382}";
CLASS_EnumInstalledApps: TGUID = "{0B124F8F-91F0-11D1-B8B5-006008059382}";
IID_IEnumPublishedApps: TGUID = "{0B124F8C-91F0-11D1-B8B5-006008059382}";

 (совпадают!)

 В реестре в WinXP appwiz.cpl находится в ключе 0B124F8F
 В Win2K - в ключе 0B124F8C
 
 Я правильно понимаю, что в реестре хранится CLASS GUID?

 Значит в Win2K запись в реестре на самом деле указывает на IID_IEnumPublishedApps, а причем здесь PublishedApps?

 Если честно, не понимаю, как мне поступать?


 
Бином Ньютоныч   (2004-08-07 10:36) [24]

В разделе CLSID хранятся Class ID, а вразделе Interface - Interface ID. Говорю же, ошибка регистрации. Просто сделай RegSvr32 AppWiz.cpl. И еще. Поищи в ХР в реестре интерфейсы. Если обнаружатся, то надо и W2k из зарегистрировать.


 
Daniel.   (2004-08-07 13:42) [25]

Не поверите, в Win2K переименовал ключ в реестре 0B124F8C -> 0B124F8F и все заработало!
Причем как с ...TBL.pas от appwiz.cpl Win2K, так и от appwiz.cpl WinXP.

 Что это? Баг винды?

> RegSvr32 AppWiz.cpl

 Нет у меня приложения RegSrv32. Что оно делает?


 
Aldor_   (2004-08-07 13:45) [26]

Daniel.   (07.08.04 13:42) [25]

Извиняюсь, это я. Опять конфликт пользователей ена одном компе.


 
Бином Ньютоныч   (2004-08-07 16:08) [27]

>Не поверите, в Win2K переименовал ключ в реестре 0B124F8C -> 0B124F8F и все заработало!

Ух ты! Да ты что! А про что тебе в [22] было сказано?

> Нет у меня приложения RegSrv32.

И слава Богу. Спокойней как-то.


 
VMcL ©   (2004-08-08 11:48) [28]

RegSvr32


 
Aldor.   (2004-08-08 14:48) [29]

VMcL ©   (08.08.04 11:48) [28]
RegSvr32

Упс, выпрямилку срочно.

RegSvr32 AppWiz.cpl - НЕ вносит измения, описанные в [25]. Как так?


 
Бином Ньютоныч   (2004-08-08 14:55) [30]

>Aldor.   (08.08.04 14:48) [29]
Это странно. У меня внесло. В таком случае можно вручную, всего 2 места. Но, возможно, лучше просто учитывать эту ситуацию в коде.


 
Aldor.   (2004-08-08 15:14) [31]

> всего 2 места

 Какое второе?? (первое описано в [25])


 
Бином Ньютоныч   (2004-08-08 15:40) [32]

>Aldor.   (08.08.04 15:14) [31]

Поиском по реестру найди. Я не запомнил, а опять запускать лень:)


 
Бином Ньютоныч   (2004-08-08 15:49) [33]

Ищи имя ключа, а не раздела. Там отображаемое опиание класса.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.08.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.033 c
3-1090781545
viktor
2004-07-25 22:52
2004.08.22
Перенос данных с *.dbf в *.fdb


1-1091972182
Toshanius
2004-08-08 17:36
2004.08.22
Програмное добавление TabSheet a


3-1090921050
Artjom
2004-07-27 13:37
2004.08.22
Изменение структуры таблицы


3-1091192861
NEWS
2004-07-30 17:07
2004.08.22
TADOQUERY как определить ошибку.


4-1089286393
wHammer
2004-07-08 15:33
2004.08.22
Можно ли и как получить доступ к клиентскому окну чужой программы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский