ДОбрый день, пробую разобраться с ДКОМ и есть некоторые вопросы.
Значит собрал EXE — сервер, зарегистрил его на сервере (NT 4.0) зарегестрил его прокси, сконфигурил его в dcomcnfg — чтобы запускался на этой машине.
Потом зарегестрил его на клиенте (Win 98) как ремоут сервер, зарегестрил его прокси, поставил дком98. Пытаюсь получить доступ к этому объекту как
CoCreateInstance(CLSID_Server,NULL, CLSCTX_REMOTE_SERVER,IID_IServer, (void**)&pITest);
в ответ получаю REGDB_E_CLASSNOTREG, хотя в ререстре сервера и клиента он есть.
Подскажите пжлста чего тута не так?
Re: Вопрос про ДКОМ
От:
Аноним
Дата:
12.10.01 12:42
Оценка:
Я тут поковырялся в настройках защиты dcomcnfg — всем все разрешил и теперь CoCreateInstance возвращает какой-то мусор.
Здравствуйте Аноним, Вы писали:
А>ДОбрый день, пробую разобраться с ДКОМ и есть некоторые вопросы. А>Значит собрал EXE — сервер, зарегистрил его на сервере (NT 4.0) зарегестрил его прокси, сконфигурил его в dcomcnfg — чтобы запускался на этой машине. А>Потом зарегестрил его на клиенте (Win 98) как ремоут сервер, зарегестрил его прокси, поставил дком98. Пытаюсь получить доступ к этому объекту как А>CoCreateInstance(CLSID_Server,NULL, CLSCTX_REMOTE_SERVER,IID_IServer, (void**)&pITest); А>в ответ получаю REGDB_E_CLASSNOTREG, хотя в ререстре сервера и клиента он есть. А>Подскажите пжлста чего тута не так?
Если хочешь сэкономить нервы и время при обучении возьми COM+ и W2k... не пожалеешь.
Похоже в твоем случае на 98-х ты не указал откуда нужно грузить сервер (компьютер), ну или это у тебя входит в понятие "зарегестрил ... как ремоут сервер". Еще возможно, что одна из машин (или обе) не в домене. Так же возможно, что ошибка в сервере. Короче, много чего возможно... кидай код... поглядим.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Вопрос про ДКОМ
От:
Аноним
Дата:
15.10.01 08:33
Оценка:
Здравствуйте VladD2, Вы писали:
VD>Если хочешь сэкономить нервы и время при обучении возьми COM+ и W2k... не пожалеешь.
VD>Похоже в твоем случае на 98-х ты не указал откуда нужно грузить сервер (компьютер), ну или это у тебя входит в понятие "зарегестрил ... как ремоут сервер". Еще возможно, что одна из машин (или обе) не в домене. Так же возможно, что ошибка в сервере. Короче, много чего возможно... кидай код... поглядим.
При регистрации сервера на клиенте в разделе реестра AppID\{CSLID}\RemoteServerName = "ServerName".
А по поводу домена то в моей сети "доменов" нет есть "рабочая группа"
А какой собсно говоря код кидать?
Здравствуйте Аноним, Вы писали:
А>Здравствуйте VladD2, Вы писали:
VD>>Если хочешь сэкономить нервы и время при обучении возьми COM+ и W2k... не пожалеешь.
VD>>Похоже в твоем случае на 98-х ты не указал откуда нужно грузить сервер (компьютер), ну или это у тебя входит в понятие "зарегестрил ... как ремоут сервер". Еще возможно, что одна из машин (или обе) не в домене. Так же возможно, что ошибка в сервере. Короче, много чего возможно... кидай код... поглядим.
А>При регистрации сервера на клиенте в разделе реестра AppID\{CSLID}\RemoteServerName = "ServerName". А>А по поводу домена то в моей сети "доменов" нет есть "рабочая группа"
И клиент коворишь на 98-х. Дык не будет у тебя ничего работать пока всю секюрите не отключишь. Или заводи домен или выру... ну об этом я уже говорил.
А>А какой собсно говоря код кидать?
Дык какой есть. Клиента и сервер (проекты имеется ввиду). Это все актуально если кода не много. Если это большая система с завязками, то предложение снимается.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Вопрос про ДКОМ
От:
Аноним
Дата:
16.10.01 07:45
Оценка:
Здравствуйте VladD2, Вы писали:
VD>И клиент коворишь на 98-х. Дык не будет у тебя ничего работать пока всю секюрите не отключишь. Или заводи домен или выру... ну об этом я уже говорил.
Дык про секюрите я уже писал выше. Пока у меня все было по умолчанию в dcomcnfg CoCreateInstance вернул REGDB_E_CLASSNOTREG, а кады я там порулил маненько (поставил везде ЕвриУане на вкладке защита по умолчанию) то CoCreateInstance вернул какой-то не зарегестированный код ошибки.
VD>Дык какой есть. Клиента и сервер (проекты имеется ввиду). Это все актуально если кода не много. Если это большая система с завязками, то предложение снимается.
Ну код в данном случае не существеннен т. к. сервер сформирован АТЛ — Визард, добавлен СОМ — объект с одним нехитрым методом. А клиент — косоль который вызывает CoCreateInstance и в случае удачи единственный метод сервера.
А нет ли каких нибудь диагностических функций из библиотеки СОМа которые бы возвращали какие нибудь осмысленные ошибки, что бы можно было сказать где косяк искать?
Здравствуйте Аноним, Вы писали:
А>ДОбрый день, пробую разобраться с ДКОМ и есть некоторые вопросы. А>Значит собрал EXE — сервер, зарегистрил его на сервере (NT 4.0) зарегестрил его прокси, сконфигурил его в dcomcnfg — чтобы запускался на этой машине. А>Потом зарегестрил его на клиенте (Win 98) как ремоут сервер, зарегестрил его прокси, поставил дком98.
как регистрировал?
на сервере надо
server.exe /Service (server.exe — имя программы)
а потом зайти в сервисы в control panel и стартовать сервис
на клиенте надо
server.exe /RegServer (server.exe — имя программы)
потом запускаешь dcomcnfg и указываешь для этого сервиса в закладке location
Run application on the following computer имя компьютера с которого ему запускаться.