Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

EOleSysError "Class not registered"


Страницы:   1 2

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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо