0
SergeyKVM
13.10.11
✎
07:03
|
При попытке из 1С через ВК обратиться к БД (SQL) другого приложения вылетает ошибка:
Ошибка подключения к серверу баз данных [ИмяСервера]!
Login failed for user 'NT AUTHORITY\АНОНИМНЫЙ ВХОД
Прочитал, что для делегирования прав необходимо вызвать функцию API
CoInitializeSecurity(NULL,-1,NULL,NULL,RPC_C_AUTHN_LEVEL_NONE,RPC_C_IMP_LEVEL_DELEGATE, NULL,0,NULL);
ИЛИ
CoInitializeSecurity( NULL, -1, NULL, NULL, 1, 4, NULL, 0, NULL)
Функция как я понял, располагается в ole32.dll
пытался вызвать данную функцию через WScript.Shell
через DynamicWrapperX
Например:
Wrap.Register("ole32.DLL", "CoInitializeSecurity",Неопределено , -1,NULL ,NULL, 1, 4,NULL, 0,NULL);
при таком вызове выдается ошибка: Типы не совпадают (12)
меняю типы на Неопределено, или 0 система вылетает в дамп, или если я ставлю ТГД
Собственно в результате возникло 2 вопроса:
1. Как можно делегировать права, чтобы в запросе к серверу сервер понимал логин и пароль от кого запрос. (как можно это сделать средствами Windows-а) у меня стоит Win 7.
2. Как всетаки лучше вызвать эту функцию api и какие передавать параметры
|
|
2
SergeyKVM
13.10.11
✎
07:25
|
(1) нет, структуру базы не знаю (+ др. сложности) Про ADO думал, но это слишком трудозатратно.
есть com компонента стороннего приложения, которая уже реализует нужные мне функции, ее и использую (проблем с запуском данной компоненты на сервере - нет) проблемы возникают при запуске на локальной машине.
|
|
4
SergeyKVM
13.10.11
✎
10:50
|
Описание функции в MSDN:
HRESULT CoInitializeSecurity(
__in_opt PSECURITY_DESCRIPTOR pSecDesc,
__in LONG cAuthSvc,
__in_opt SOLE_AUTHENTICATION_SERVICE *asAuthSvc,
__in_opt void *pReserved1,
__in DWORD dwAuthnLevel,
__in DWORD dwImpLevel,
__in_opt void *pAuthList,
__in DWORD dwCapabilities,
__in_opt void *pReserved3
);
Делаю
Wrap.Register("ole32.DLL", "CoInitializeSecurity","i=pippuupup");
Wrap.CoInitializeSecurity(, -1,, , 1, 4,, 0,);
Ругается:
Ошибка при вызове метода контекста (Register)
Wrap.Register("ole32.DLL", "CoInitializeSecurity","i=pippuupup");
по причине:
Неизвестная ошибка
я неправильно указываю типы или в чем проблема?
|
|