![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Здравствуйте!
Суть проблемы: в программе содержится обращение к некоему Ком-серверу 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
|
|||
|
|||
![]() Надо смотреть код. Скорее всего, если нажмешь "продолжить", то дальше будет работать нормально. Просто IDE останавливается на всез эксепшенах (можно поменить в настройках), а именно этот обрабатывается и запускается альтернативаня ветка. Так обычно написана работа с офисем через COM. Сначала идет попытка подключиться к существующему экземпляру, если такового нет, по получается эксепшн, по которому идет вызов создания нового экземпляра. Видимо, у тебя примерно такой код, так что появление эксепшена - нормальная ситуация в данном случае.
|
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Nikkore (11.10.2015)
|
#3
|
|||
|
|||
![]() Увы, исключение возникает не дельфийское (они у меня отключены), а виндусовское.
После некоторых экспериментов обнаружилось следующее. Когда запускаю откомпилированную программу из Проводника Windows обычным образом, подключаюсь к ком-серверу без проблем. Если же от имени администратора, то при попытке приконнектиться к ком-серверу получаю сообщение об ошибке EOleSysError. Чудеса, да и только! Выходит, для юзера с повышенными правами сервер не зарегистрирован, а с обычными - зарегистрирован... PS. Кода нет практически никакого - только LogosLauncher1.Connect И всё! =================== Проблема решилась после переноса (вручную) регистрации сервера из HKEY_CURRENT_USER в HKEY_LOCAL_MACHINE. Спасибо! Последний раз редактировалось Nikkore, 11.10.2015 в 23:05. |
#4
|
|||
|
|||
![]() Хм, а какой чудак зарегал сервер в HKCU?
Кстати, да. Обычный юзер, даже если он админ, и юзер, который исп. при Run As Administrator - это разные юзеры. Более того, если еще похожая проблема на x64, там тоже пришлось регистрацию скопировать в x64 ветку реестра. |
#5
|
|||
|
|||
![]() Так регистрируется программа Logos Bible Software.
Кстати, у меня не получается тот же фокус на виртуальной машине: юзером удается приконнектиться а серверу, а тем же юзером "As Admin" не удается, хотя все ключи в реестрах вроде полностью совпадают. "Класс не зарегистрирован", и всё тут(( |
#6
|
|||
|
|||
![]() вообще, если правильно помню, то все это должно регистрироваться в HKEY_CLASSES_ROOT. Он общий для всех пользователей, НО РАЗНЫЙ для х86 и х64.
|