DomainCredentials: IDomainCredentials;
DomainCredentials: Prognoz.Platform.Interop.Metabase.IDomainCredentials;
Свойство DomainCredentials определяет учетные данные, под которыми будет осуществляться авторизация в домене при поиске.
Для выполнения примера добавьте ссылку на системную сборку Metabase.
Sub FindSubject;
Var
MB: IMetabase;
Pack: ISecurityPackage;
DomainCreds: IDomainCredentials;
Search: ISecuritySubjectsSearch;
Subjects: ISecuritySubjects;
Subject: ISecuritySubject;
Begin
MB := MetabaseClass.Active;
Search := MB.Security.NewSubjectsSearch;
Search.NameCriteria := "TestDomain\*";
Search.SubjectCriteria(SecuritySubjectType.User) := True;
Search.SubjectCriteria(SecuritySubjectType.Group) := True;
Search.AreaIncludeDB := False;
Search.AreaIncludeNT := True;
//Настройки для поиска в домене
Pack := New StandardSecurityPackage.Create;
//Использовать учетные данные текущего пользователя, авторизовавшегося в домене
DomainCreds := Pack.CreateCredentials(AuthenticationMode.Domain) As IDomainCredentials;
DomainCreds.LogonAsCurrentUser := True;
Search.DomainSelectCriteria := DomainSelectType.SpecifiedDomain;
Search.ProtocolSelectCriteria := ProtocolSelectType.GC;
//Поиск
Search.ExecuteSearch;
Subjects := Search.Subjects;
If Subjects.Count > 0 Then
For Each Subject In Subjects Do
Debug.WriteLine("Distinguished Name: " + Subject.DistinguishedName);
If Subject.Type = SecuritySubjectType.User Then
Debug.WriteLine("Domain User Name: " + Subject.UserPrincipalName);
End If;
End For;
End If;
End Sub FindSubject;
При выполнении примера будет произведен поиск всех субъектов безопасности, зарегистрированных в домене «TestDomain». Для найденных субъектов в консоль среды разработки будут выведены различающиеся имена. Для доменных пользователей также будут выведены доменные имена.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
Imports Prognoz.Platform.Interop.Metabase;
Public Shared Sub Main(Params: StartParams);
Var
MB: IMetabase;
Pack: ISecurityPackage = New StandardSecurityPackageClass();
DomainCreds: IDomainCredentials;
Search: ISecuritySubjectsSearch;
Subjects: ISecuritySubjects;
Subject: ISecuritySubject;
Begin
MB := Params.Metabase;
Search := MB.Security.NewSubjectsSearch();
Search.NameCriteria := "TestDomain\*";
Search.SubjectCriteria[SecuritySubjectType.sstUser] := True;
Search.SubjectCriteria[SecuritySubjectType.sstGroup] := True;
Search.AreaIncludeDB := False;
Search.AreaIncludeNT := True;
//Настройки для поиска в домене
//Использовать учетные данные текущего пользователя, авторизовавшегося в домене
DomainCreds := Pack.CreateCredentials(AuthenticationMode.amDomain) As IDomainCredentials;
DomainCreds.LogonAsCurrentUser := True;
Search.DomainSelectCriteria := DomainSelectType.dstSpecifiedDomain;
Search.ProtocolSelectCriteria := ProtocolSelectType.pstGC;
//Поиск
Search.ExecuteSearch();
Subjects := Search.Subjects;
If Subjects.Count > 0 Then
For Each Subject In Subjects Do
System.Diagnostics.Debug.WriteLine("Distinguished Name: " + Subject.DistinguishedName);
If Subject.Type = SecuritySubjectType.sstUser Then
System.Diagnostics.Debug.WriteLine("Domain User Name: " + Subject.UserPrincipalName);
End If;
End For;
End If;
End Sub;
См. также: