WNetAddConnection2 & ERROR_SESSION_CREDENTIAL_CONF
От: Bailif  
Дата: 27.05.02 10:02
Оценка:
Привет!

Есть вот такой код:


        NETRESOURCE NetSource;
    NetSource.dwType = RESOURCETYPE_DISK;
    NetSource.lpProvider = NULL;
    NetSource.lpLocalName = "J:";
    NetSource.lpRemoteName = "\\\\server\\ForBailif";
    DWORD dwResult = ::WNetAddConnection2(&NetSource, 
                          lpszPassword,
                          lpszName, 
                          CONNECT_PROMPT);       

    //Чего то ещё
    dwResult = WNetCancelConnection2("J:", 0, FALSE);
    return 0;


— код выполняется под credentials NameA и PassA
— если вызвать эту вещь с lpszPassword и lpszName = NULL — то усё пашет как и должно быть...

— если вызвать эту вещь с lpszPassword и lpszName — текущего пользователя — что одно и тоже — то тоже ОК.

— если же вызвать эту же вещь c NameB и PassB — пользователь с админскими правами существующий на обеих машинах, то увы и ах — вываливается 1219 а именно "The credentials supplied conflict with an existing set of credentials." — в чём причина и как это может лечиться?

На всякий случай OS — W2K Pro и W2K Server.

Спасибо!
Re: WNetAddConnection2 & ERROR_SESSION_CREDENTIAL_CONF
От: Lexey Россия  
Дата: 27.05.02 10:30
Оценка: 2 (1)
Здравствуйте Bailif, Вы писали:

B>- если же вызвать эту же вещь c NameB и PassB — пользователь с админскими правами существующий на обеих машинах, то увы и ах — вываливается 1219 а именно "The credentials supplied conflict with an existing set of credentials." — в чём причина и как это может лечиться?


Причина стандартная — с удаленной машиной уже установлено соединение с другими credentials. Лечится предварительным удалением всех соединений с удаленной машиной.
Re: WNetAddConnection2 & ERROR_SESSION_CREDENTIAL_CONF
От: Алекс Россия http://wise-orm.com
Дата: 27.05.02 10:36
Оценка:
Здравствуйте Bailif, Вы писали:

B>Привет!


B>Есть вот такой код:



B>
B>        NETRESOURCE NetSource;
B>    NetSource.dwType = RESOURCETYPE_DISK;
B>    NetSource.lpProvider = NULL;
B>    NetSource.lpLocalName = "J:";
B>    NetSource.lpRemoteName = "\\\\server\\ForBailif";
B>    DWORD dwResult = ::WNetAddConnection2(&NetSource, 
B>                          lpszPassword,
B>                          lpszName, 
B>                          CONNECT_PROMPT);       

B>    //Чего то ещё
B>    dwResult = WNetCancelConnection2("J:", 0, FALSE);
B>    return 0;
B>


B>- код выполняется под credentials NameA и PassA

B>- если вызвать эту вещь с lpszPassword и lpszName = NULL — то усё пашет как и должно быть...

B>- если вызвать эту вещь с lpszPassword и lpszName — текущего пользователя — что одно и тоже — то тоже ОК.


B>- если же вызвать эту же вещь c NameB и PassB — пользователь с админскими правами существующий на обеих машинах, то увы и ах — вываливается 1219 а именно "The credentials supplied conflict with an existing set of credentials." — в чём причина и как это может лечиться?


B>На всякий случай OS — W2K Pro и W2K Server.


B>Спасибо!


Посмотри SCMConnect тута.
Автор(ы): Александр Федотов
Дата: 24.03.2002
В статье рассматриваются вопросы управления системными
службами Windows NT: чтение и изменение конфигурации, запуск и
остановка, установка и удаление служб. В статье описана большинство
функций управления службами, использование каждой функции
продемонстрировано примерами.
Re[2]: WNetAddConnection2 & ERROR_SESSION_CREDENTIAL_CONF
От: Bailif  
Дата: 27.05.02 14:13
Оценка:
L>Причина стандартная — с удаленной машиной уже установлено соединение с другими credentials. Лечится предварительным удалением всех соединений с удаленной машиной.

Спасибо!

Ещё вопрос — таже вещь засунутая в COM и вызываемая из ASP бросает ERROR_NO_SUCH_LOGON_SESSION
— что вообще не лезет ни в какие ворота ...

— что тут плохо? Вот здесь как я понял делается то же...
Re[3]: WNetAddConnection2 & ERROR_SESSION_CREDENTIAL_CONF
От: Lexey Россия  
Дата: 27.05.02 14:21
Оценка:
Здравствуйте Bailif, Вы писали:

B>Ещё вопрос — таже вещь засунутая в COM и вызываемая из ASP бросает ERROR_NO_SUCH_LOGON_SESSION

B>- что вообще не лезет ни в какие ворота ...

Под кем выполняется ASP-приложение? Если под IUSR_<MACHINE>, то ничего удивительного в этом нет.
Re[4]: WNetAddConnection2 & ERROR_SESSION_CREDENTIAL_CONF
От: Bailif  
Дата: 27.05.02 14:32
Оценка:
Здравствуйте Lexey, Вы писали:

L>Здравствуйте Bailif, Вы писали:


B>>Ещё вопрос — таже вещь засунутая в COM и вызываемая из ASP бросает ERROR_NO_SUCH_LOGON_SESSION

B>>- что вообще не лезет ни в какие ворота ...

L>Под кем выполняется ASP-приложение? Если под IUSR_<MACHINE>, то ничего удивительного в этом нет.


Да. Под ним. Не поясните подробнее в чем дело и как лечится?
Re[5]: WNetAddConnection2 & ERROR_SESSION_CREDENTIAL_CONF
От: Lexey Россия  
Дата: 28.05.02 06:21
Оценка:
Здравствуйте Bailif, Вы писали:

B>Здравствуйте Lexey, Вы писали:


L>>Здравствуйте Bailif, Вы писали:


B>>>Ещё вопрос — таже вещь засунутая в COM и вызываемая из ASP бросает ERROR_NO_SUCH_LOGON_SESSION

B>>>- что вообще не лезет ни в какие ворота ...

L>>Под кем выполняется ASP-приложение? Если под IUSR_<MACHINE>, то ничего удивительного в этом нет.


B>Да. Под ним. Не поясните подробнее в чем дело и как лечится?


Дело в том, что IUSR_<MACHINE> (и IWAM_<MACHINE>) — локальные пользователи. Естественно, что доступа к сети они не имеют.

Вариантов лечения много:
1) засынуть свой COM-объект в COM+-приложение, выполняющееся под доменным пользователем, у которого есть права на доступ к удаленному ресурсу (ИМХО, самый правильный метод, но не самый простой).
2) заменить IUSR_<MACHINE> на пользователя с нужными правами (самый простой, но самый неправильный способ).
3) внутри страницы имперсонироваться (логинится) под другим пользователем с нужными правами (сложнее 1 и 2, по правильности ближе к 2. требует наличия компонента для имперсонации, хотя есть готовые).
4) настроить Kerberos-аутентификацию для приложения, разрешить делегирование полномочий (самый сложный вариант и подходит только для доменов под W2K).
Re[2]: WNetAddConnection2 & ERROR_SESSION_CREDENTIAL_CONF
От: FAR  
Дата: 06.07.02 14:31
Оценка:
Рабочая часть

WORD wVersionRequested;
WSADATA wsaData;
int err;
NETRESOURCE nr;

wVersionRequested = MAKEWORD( 2, 0 );
WSAStartup( wVersionRequested, &wsaData );
nr.dwType=RESOURCETYPE_DISK;
nr.lpRemoteName="\\\\10.48.101.150\\test";
nr.lpLocalName="X:";
nr.lpProvider=NULL;
WNetAddConnection2(&nr,"far","far",CONNECT_PROMPT);
WNetCancelConnection2("X:",0,true);
WSACleanup( );



-=FAR=-
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.