![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
EOleSysError "Class not registered"
Aldor_ © (2004-08-06 13:47:00)Программа под WinXP работает нормально, а под Win2K вылетает сабж. Подозрвеваю (нет возможности проверить точнее), что ошибка происходит на строке
CreateComObject(CLASS_EnumInstalledApps) as IEnumInstalledApps(строка из модуля, ковертнутого из IDL-файла)
Хотя в справке сказано, что поддерживаются винды 98-XP. Или тогда о чем сигнализирует сабж?
Бином Ньютоныч (2004-08-08 15:49:00) [1]Ищи имя ключа, а не раздела. Там отображаемое опиание класса.
Бином Ньютоныч (2004-08-08 15:40:00) [2]>Aldor. (08.08.04 15:14) [31]
Поиском по реестру найди. Я не запомнил, а опять запускать лень:)
Aldor. (2004-08-08 15:14:00) [3]> всего 2места
Какое второе?? (первое описано в [25])
Бином Ньютоныч (2004-08-08 14:55:00) [4]>Aldor. (08.08.04 14:48) [29]
Это странно. У меня внесло. В таком случае можно вручную, всего 2 места. Но, возможно, лучше просто учитывать эту ситуацию в коде.
Aldor. (2004-08-08 14:48:00) [5]VMcL © (08.08.04 11:48) [28]
RegSvr32
Упс, выпрямилку срочно.
RegSvr32 AppWiz.cpl - НЕ вносит измения, описанные в [25]. Как так?
VMcL (2004-08-08 11:48:00) [6]RegS vr32
Бином Ньютоныч (2004-08-07 16:08:00) [7]>Не поверите, в Win2K переименовал ключ в реестре 0B124F8C -> 0B124F8F и все заработало!
Ух ты! Да ты что! А про что тебе в [22] было сказано?
> Нет у меня приложения RegSrv32.
И слава Богу. Спокойней как-то.
Aldor_ (2004-08-07 13:45:00) [8]Daniel. (07.08.04 13:42) [25]
Извиняюсь, это я. Опять конфликт пользователей ена одном компе.
Daniel. (2004-08-07 13:42:00) [9]Не поверите, в Win2K переименовал ключ в реестре
0B124F8C->0B124F8Fи все заработало!
Причем как с ...TBL.pas от appwiz.cpl Win2K, так и от appwiz.cpl WinXP.
Что это? Баг винды?
> RegSvr32 AppWiz.cpl
Нет у меня приложения RegSrv32. Что оно делает?
Бином Ньютоныч (2004-08-07 10:36:00) [10]В разделе CLSID хранятся Class ID, а вразделе Interface - Interface ID. Говорю же, ошибка регистрации. Просто сделай RegSvr32 AppWiz.cpl. И еще. Поищи в ХР в реестре интерфейсы. Если обнаружатся, то надо и W2k из зарегистрировать.
Aldor_ (2004-08-07 06:54:00) [11]Вот резулты импорта 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 находится в ключе0B124F8 F
В Win2K - в ключе0B124F8 C
Я правильно понимаю, что в реестре хранится CLASSGUID?
Значит в Win2K запись в реестре на самом деле указывает на IID_IEnum Published Apps, а причем здесь PublishedApps?
Если честно, не понимаю, как мне поступать?
Бином Ньютоныч (2004-08-06 17:04:00) [12]Так и есть: в appwiz.cpl в TLB стоит
0B124F8F-91F0-11D1-B8B5-006008059382
а в реестре
0B124F8C-91F0-11D1-B8B5-006008059382
>Aldor_
Явно ошибка регистрации, исправь в реестре. Заодно и остальные GUID из этой библии проверь. И нам расскажи:)
Aldor_ (2004-08-06 16:58:00) [13]Спасибо большое за консультацию, попробую, о результатах в этой ветке сообщу.
Digitman (2004-08-06 16:51:00) [14]значится, так ...
выкинь нафих то что ты получл с пом. импорта IDL
1. открой любой Делфи-проект
2. выполни меню Projects -> Import Type Library..
3. по кнопке Add выбери файл appwiz.cpl в сист.каталоге ОС
4. нажми кн. Create Unit
в рез-те у тебя будет создан файл SHAPPMGRLib_TLB.pas
повтори это для другой ОС, получи такой же файл для нее, сравни эти файлы
если они совпадают в части CLSID и декларируемых в них интерфейсов, то лажа, наверно - в использованном тобой IDL
Aldor_ (2004-08-06 16:32:00) [15]Подставил 2К-шное значение CLSID, запустил (под Win2K), ответила опять эксепшеном: "Class factory cannot suply requeated class". Так верить msdn или нет? (я об информации о поддержке разных ОС)
Digitman (2004-08-06 16:08:00) [16]
> Aldor_ (06.08.04 16:02) [16]
эээ... я никогда не вдавался в эти подробности, это уж ты сам выясняй
в дан. же случае попробуй поменять CLSID в XXX_TLB.PAS на реально зарегистрированный и попробуй создать объект и поработать с ним - вероятность совместимости интерфейсов должна быть явно не нулевая)
Aldor_ (2004-08-06 16:03:00) [17]> доведем уж слепого до цели !
:) Ну почему же слепого? Просто начинающего :)
Aldor_ (2004-08-06 16:02:00) [18]Хм...
0B124F8 F-91F0-11D1-B8B5-006008059382 - WinXP
0B124F8 C-91F0-11D1-B8B5-006008059382 - Win2K
и... эээ... что теперь, проверять в ран-тайм версию системы? А может CLSID еще и от сервис пака к сервис паку меняется?
Digitman (2004-08-06 15:56:00) [19]
> VMcL © (06.08.04 15:42) [12]
ввязался же ... куда теперь деваться ... доведем уж слепого до цели !
Digitman (2004-08-06 15:54:00) [20]
> Aldor_ (06.08.04 15:45) [13]
а теперь смотри, есть ли файл этого апплета в наличии в W2k - он обязан там быть !
ищи в реестре ссылки на строчку 'appwiz.cpl'
у меня - Винтукей, и этот апплет присутствует и зарегистрирован в реестре так :
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{0B124F8C-91F0-11D1-B8B5-006008059382}\InProcServer32