powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Ошибка Отказано в доступе в DCOM
1 сообщений из 1, страница 1 из 1
Ошибка Отказано в доступе в DCOM
    #32940576
Джек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день всем!
Я написал в 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
1 сообщений из 1, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Ошибка Отказано в доступе в DCOM
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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