powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Ошибка Отказано в доступе в DCOM
6 сообщений из 6, страница 1 из 1
Ошибка Отказано в доступе в DCOM
    #32940581
Джек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день всем!
Я написал в VC++ сервер DCOM. Установил его на другом сервере(windows 2003 server). Если запускаю программу-клиент на машине с
Windows 98 соединение с сервером проходит успешно, и функции сервера вызываются успешно.
Когда же запускаю клиента на машине с Windows XP выскакивает код
ошибки E_ACCESSDENIED (Отказано в доступе). Причем сам объект сервера создается успешно, а ошибка выскакивает на вызове метода этого объекта. На сервере с помощью утилиты dcomcnfg.exe для объекта
сервера установлены все разрешения для всех.
Вот мой код вызова из клиента:

Код

HRESULT hr = CoInitialize(NULL);
if (FAILED(hr))
{
// Не удалось инициализировать библиотеку COM
_com_error err(hr);
const char * pszErrorDescr = err.ErrorMessage();
//printf(«%s\n», pszErrorDescr);
return 0;
}
char* pszIP = "ip адрес сервера";
USES_CONVERSION;
COSERVERINFO si;
COAUTHIDENTITY identity;
identity.User =L"webmaster";
identity.UserLength =9; //wstrUser.Length();
identity.Domain = L"asu";
identity.DomainLength =3;
identity.Password =L"90";
identity.PasswordLength =2;
identity.Flags = SEC_WINNT_AUTH_IDENTITY_UNICODE;

COAUTHINFO auth;
auth.dwAuthnSvc =RPC_C_AUTHN_WINNT;
auth.dwAuthzSvc =RPC_C_AUTHZ_NONE;
auth.pwszServerPrincName = NULL;
auth.dwAuthnLevel =RPC_C_AUTHN_LEVEL_PKT;
auth.dwImpersonationLevel =RPC_C_IMP_LEVEL_IMPERSONATE;
auth.pAuthIdentityData = &identity;
auth.dwCapabilities = EOAC_NONE;

memset(&si, 0, sizeof(si));
si.pAuthInfo =&auth;
si.pwszName = T2W(pszIP);
MULTI_QI qi;
qi.pItf = NULL;
qi.hr = 0;
qi.pIID = &__uuidof(IMyATLSrv3);
try
{


// Здесь создается успешно

hr = CoCreateInstanceEx(CLSID_MyATLSrv3, NULL, CLSCTX_REMOTE_SERVER, &si, 1, &qi );

if(FAILED(hr))
{
_com_error ex(hr);
const char * pszErrorDescr1 = ex.ErrorMessage();
throw ex;
}
IMyATLSrv3Ptr spI; // смарт-указатель
spI.Attach((IMyATLSrv3*)qi.pItf);
// Вызываем методы интерфейса
double x,y,s;
char sx[50],sy[50],ss[50];
GetDlgItemText(hDlg,IDC_EDIT1,sx,49);
GetDlgItemText(hDlg,IDC_EDIT2,sy,49);
x=atof(sx);
y=atof(sy);
// А здесь выскакивает ошибка E_ACCESSDENIED
s=spI->testsum3 (x,y);
sprintf(ss,"%lf",s);
SetDlgItemText(hDlg,IDC_EDIT3,ss);
}
catch(_com_error & ex)
{
// Обработка ошибок
const char * pszErrorDescr = ex.ErrorMessage();
MessageBox (hDlg,pszErrorDescr,"Сообщение",MB_OK);
}
// Освободить библиотеку COM
CoUninitialize();

}
break;

}
...
Рейтинг: 0 / 0
Ошибка Отказано в доступе в DCOM
    #32942771
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юзаещь WINXP ?

Сделай в главном потоке DCOM сервера и клиента

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
                 HRESULT hr;
                 CoInitialize(NULL);
                 hr = CoInitializeSecurity(
                        NULL, - 1 , NULL, NULL,
                        RPC_C_AUTHN_LEVEL_NONE,
                        RPC_C_IMP_LEVEL_IDENTIFY,
                        NULL, EOAC_NONE, NULL);

  и на завершение DCOM  и клиента
     CoUninitialize();


Эта "вещь" означает , что серверу не требуется никакого уровня безопасности, так сказать .
Но именно должно быть и на клиенте и на сервере .
это не прокатит для in-proc Серверов ...
И вообще в настройках безопасности DCOM сделай все доступно для всех и попробуй .



 ш
(';')
(V),(V),,
Код: plaintext
 JS 
...
Рейтинг: 0 / 0
Ошибка Отказано в доступе в DCOM
    #32943581
Джек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемый JibSkeart!
Спасибо за ответ!
Но всё это я уже делал.
Код: plaintext
это не прокатит для in-proc Серверов 
Вы имеете ввиду dll-сервера?
...
Рейтинг: 0 / 0
Ошибка Отказано в доступе в DCOM
    #32945258
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДжекУважаемый JibSkeart!
Спасибо за ответ!
Но всё это я уже делал.
Код: plaintext
это не прокатит для in-proc Серверов 
Вы имеете ввиду dll-сервера?

Дя я имею ввиду ,если DCOM реализован ввиде DLL.

Кстати не забывай что есть такой маразм у DCOM, если сервер лежит
в рашаренной папке, где доступы на расш. папку стоят не для всех итд .
то уровен авторизации будет такой как и у этой расш. папки .
ну, что то в таком духе описывалось на RSDN.ru

и помойму это все справедливо только для WinXP
я вообще начал подозревать , когда я тоже долго мучился и мне отказ доступа был ,что там даже от владельца зависит , короче переборщили с уровнями безопасности .
но если перебросишь DCOM сервер на Win2000 то у тебя таких проблем уже не будет ,я так и поступил .
...
Рейтинг: 0 / 0
Ошибка Отказано в доступе в DCOM
    #32947920
Джек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
Дя я имею ввиду ,если DCOM реализован ввиде DLL.
А у меня именно dll-сервер.Про exe-сервер я читал где-то, что он не подходит
для трёхуровнего приложения.
В общем я нашёл альтернативу, сделал сервер как веб-службу(тоже dll) это пока работает.Незнаю правда как будет при одновременном обращении нескольких пользователей к этой веб-службе.
...
Рейтинг: 0 / 0
Ошибка Отказано в доступе в DCOM
    #32948788
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Джек
Код: plaintext
Дя я имею ввиду ,если DCOM реализован ввиде DLL.
А у меня именно dll-сервер.Про exe-сервер я читал где-то, что он не подходит
для трёхуровнего приложения.
В общем я нашёл альтернативу, сделал сервер как веб-службу(тоже dll) это пока работает.Незнаю правда как будет при одновременном обращении нескольких пользователей к этой веб-службе.

Не знаю , у меня был out-proc сервер ,
ты знаешь все нормально было , хотя для моего случая было не принципиально .
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Ошибка Отказано в доступе в DCOM
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]