powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Имя пользователя из AD
8 сообщений из 8, страница 1 из 1
Имя пользователя из AD
    #39280318
kot07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, подскажите что я делаю не так и как поправить?
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
private void b1_Click(object sender, RoutedEventArgs e)
            {
                string uLogin = Environment.UserName; 
                getUser(uLogin);
            
            }
 
        private void getUser(string uLogin)
        {
            string filter = string.Format("(&(ObjectClass={0})(sAMAccountName={1}))", "person", uLogin);
            string domain = "DC=jsc,DC=com";
            string[] properties = new string[] { "fullname" };
 
            DirectoryEntry adRoot = new DirectoryEntry("LDAP://" + domain, null, null, AuthenticationTypes.Secure);
            DirectorySearcher searcher = new DirectorySearcher(adRoot);
        
            SearchResult result = searcher.FindOne();
            DirectoryEntry directoryEntry = result.GetDirectoryEntry();
 
            string displayName = directoryEntry.Properties["displayname"][0].ToString();
            MessageBox.Show(displayName);
 
        }



на строке string displayName = directoryEntry.Properties["displayname"][0].ToString();
выходит ошибка
An unhandled exception of type 'System.ArgumentOutOfRangeException ' occurred in mscorlib.dll

Additional information: Index was out of range. Must be non-negative and less than the size of the collection.
...
Рейтинг: 0 / 0
Имя пользователя из AD
    #39280391
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
смотри отладчиком что там в directoryEntry.Properties["displayname"]
...
Рейтинг: 0 / 0
Имя пользователя из AD
    #39280417
kot07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
там null почему то
...
Рейтинг: 0 / 0
Имя пользователя из AD
    #39280466
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Вроде там регистр имеет значение. Попробуйте displayName, как в доке
...
Рейтинг: 0 / 0
Имя пользователя из AD
    #39280744
kot07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поправил, не изменилось
...
Рейтинг: 0 / 0
Имя пользователя из AD
    #39280745
kot07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
string displayName = directoryEntry.Properties["displayName"].ToString();



выходит сообщение
System.DirectoryServices.PropertyValueCollection
...
Рейтинг: 0 / 0
Имя пользователя из AD
    #39280751
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
kot07
Код: c#
1.
string displayName = directoryEntry.Properties["displayName"][0].ToString();




выходит сообщение
System.DirectoryServices.PropertyValueCollection


Код: c#
1.
string displayName = directoryEntry.Properties["displayName"][0].ToString();
...
Рейтинг: 0 / 0
Имя пользователя из AD
    #39280755
kot07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
string displayName = directoryEntry.Properties["displayName"][0].ToString();


так выходит ошибка. Вообщем ошибка я так понял потому что передавалась только учетка, добавил домен и условие стало работать как нужно
Код: c#
1.
string uLogin = Environment.UserDomainName + "\\" + Environment.UserName; //



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
 public void getUser(string uLogin)
                    {
                        string displayname;
                        if (uLogin.IndexOf("\\") > -1)
                        {
                            string domain = uLogin.Split('\\')[0];
                            uLogin = uLogin.Split('\\')[1];

                            string filter = string.Format("(&(ObjectClass={0})(sAMAccountName={1}))", "person", uLogin);
                            string[] properties = new string[] {"fullname"};

                            DirectoryEntry adRoot = new DirectoryEntry("LDAP://" + domain, null, null,
                                AuthenticationTypes.Secure);
                            DirectorySearcher searcher = new DirectorySearcher(adRoot);
                            searcher.SearchScope = SearchScope.Subtree;
                            searcher.ReferralChasing = ReferralChasingOption.All;
                            searcher.PropertiesToLoad.AddRange(properties);
                            searcher.Filter = filter;

                            SearchResult result = searcher.FindOne();
                            DirectoryEntry directoryEntry = result.GetDirectoryEntry();
                            try
                            {
                                displayname = directoryEntry.Properties["displayName"][0].ToString();

                            }
                            catch (Exception)
                            {
                            }

                            MessageBox.Show(displayname.ToString());
                            
                        }

                    }
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Имя пользователя из AD
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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