|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Авторизация в другом домене
Всем доброго времени суток. Прошу помочь.
Ситуация: Есть 2 домена. Доверительных отношений нет. В обоих доменах настроена условная переадресация DNS запросов. В каждом домене есть учетная запись с админскими правами. (учетный записи и пароли различны). Есть программа, которая позволяет включать\выключать usb (изменение значений реестра, переименование inf файлов). В домене №1 всё работает. Задача. В домене №1 запустить эту программу, которая бы позволила авторизоваться в домене №2 и запустить включение\отключение usb. Пытаюсь запустить проверку авторизации в другом домене с помощью кода Код:
procedure TEn_Dis_Usb.Button1Click(Sender: TObject); var UserName,Password,DomainName:PAnsiChar; tolken:THandle; vReg: TRegistry; begin UserName:=PAnsiChar(login.Text); Password:=PAnsiChar(Password1.Text); DomainName:=PAnsiChar(domain.Text); try if LogonUser(PChar(UserName),PChar(DomainName),PChar(Password),LOGON32_LOGON_INTERACTIVE,LOGON32_PROVIDER_DEFAULT,tolken) then begin Beep; ImpersonateLoggedOnUser(tolken); ShowMessage('Авторизация успешно пройдена'); end else ShowMessage('Авторизация НЕ пройдена'); finally CloseHandle(tolken); end; end; Если я ввожу данные другого домена, то получаю сообщение, что авторизация не пройдена. Запускаю там где непосредственно работаю - авторизация пройдена. Подскажите куда копать, или что я делаю не так. Пробовал соединиться с доменом через adoconnection: Код:
procedure TEn_Dis_Usb.Button2Click(Sender: TObject); var i,j:integer; f,sql:string; res:string; begin ADOConnection2:=TADOConnection.Create(nil); with ADOConnection2 do begin ConnectionString:='Provider=ADsDSOObject;Password=sadmin;User ID=domainname\admin;Encrypt Password=False;Data Source=domain;Location=LDAP://domainname/Domain;Mode=Read;Bind Flags=0;ADSI Flag=1'; Provider:='ADsDSOObject'; LoginPrompt:=False; Connected:=True; end; AdoQuery2:=TADOQuery.Create(nil); AdoQuery2.SQL.Clear; AdoQuery2.SQL.Text:= 'select DistinguishedName from ''LDAP://DC=domainname, DC=domainname'+''' where CN='''+edit1.text+''''; AdoQuery2.Connection:=ADOConnection2; AdoQuery2.Open; AdoQuery2.Active:=true; DataSource2.DataSet:=AdoQuery2; Dbgrid1.DataSource:=DataSource2; res:=''; for i:=0 to DBGrid1.DataSource.DataSet.FieldCount-1 do res:=DBGrid1.DataSource.DataSet.Fields[i].AsString; Edit3.Text:=res; AdoQuery2.Close; AdoQuery2.Destroy; ADOConnection2.Destroy; end; Выдает ошибку неверный логин или пароль. |