Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 11.10.2015, 10:10
Nikkore Nikkore вне форума
Прохожий
 
Регистрация: 11.12.2012
Сообщения: 16
Репутация: 10
По умолчанию EOleSysError только из IDE!

Здравствуйте!

Суть проблемы: в программе содержится обращение к некоему Ком-серверу LogosLauncher1.Connect. При этом получаю сообщение:
Exception EOleSysError in module Project1.exe at 0005608D. Class not registered.

Самое непонятное для меня то, что эта ошибка возникает только при запуске программы из IDE. При обычном запуске программы все ОК, сервер подключается!
В чем может быть проблема?

Спасибо!

PS. Пробовал полностью удалить соответствующий компонент из Delphi, заново устанавливал через Import Type Library - все то же самое.

PPS. Использую Delphi 7 в Windows 7, Delphi запускаю от администратора.

PPPS. Уже написав это заметил, что при запуске Project1.exe из проводника Windows от администратора сервер тоже НЕ подключается!! Наверняка проблема какая-то глупая...

Последний раз редактировалось Nikkore, 11.10.2015 в 10:36.
Ответить с цитированием
  #2  
Старый 11.10.2015, 19:54
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,036
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Надо смотреть код. Скорее всего, если нажмешь "продолжить", то дальше будет работать нормально. Просто IDE останавливается на всез эксепшенах (можно поменить в настройках), а именно этот обрабатывается и запускается альтернативаня ветка. Так обычно написана работа с офисем через COM. Сначала идет попытка подключиться к существующему экземпляру, если такового нет, по получается эксепшн, по которому идет вызов создания нового экземпляра. Видимо, у тебя примерно такой код, так что появление эксепшена - нормальная ситуация в данном случае.
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
Nikkore (11.10.2015)
  #3  
Старый 11.10.2015, 21:58
Nikkore Nikkore вне форума
Прохожий
 
Регистрация: 11.12.2012
Сообщения: 16
Репутация: 10
По умолчанию

Увы, исключение возникает не дельфийское (они у меня отключены), а виндусовское.

После некоторых экспериментов обнаружилось следующее. Когда запускаю откомпилированную программу из Проводника Windows обычным образом, подключаюсь к ком-серверу без проблем. Если же от имени администратора, то при попытке приконнектиться к ком-серверу получаю сообщение об ошибке EOleSysError. Чудеса, да и только!

Выходит, для юзера с повышенными правами сервер не зарегистрирован, а с обычными - зарегистрирован...

PS. Кода нет практически никакого - только

LogosLauncher1.Connect

И всё!

===================

Проблема решилась после переноса (вручную) регистрации сервера из HKEY_CURRENT_USER в HKEY_LOCAL_MACHINE.

Спасибо!

Последний раз редактировалось Nikkore, 11.10.2015 в 23:05.
Ответить с цитированием
  #4  
Старый 12.10.2015, 23:26
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,036
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Хм, а какой чудак зарегал сервер в HKCU?
Кстати, да. Обычный юзер, даже если он админ, и юзер, который исп. при Run As Administrator - это разные юзеры. Более того, если еще похожая проблема на x64, там тоже пришлось регистрацию скопировать в x64 ветку реестра.
Ответить с цитированием
  #5  
Старый 13.10.2015, 00:27
Nikkore Nikkore вне форума
Прохожий
 
Регистрация: 11.12.2012
Сообщения: 16
Репутация: 10
По умолчанию

Так регистрируется программа Logos Bible Software.

Кстати, у меня не получается тот же фокус на виртуальной машине: юзером удается приконнектиться а серверу, а тем же юзером "As Admin" не удается, хотя все ключи в реестрах вроде полностью совпадают. "Класс не зарегистрирован", и всё тут((
Ответить с цитированием
  #6  
Старый 14.10.2015, 19:24
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,036
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

вообще, если правильно помню, то все это должно регистрироваться в HKEY_CLASSES_ROOT. Он общий для всех пользователей, НО РАЗНЫЙ для х86 и х64.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:29.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter