Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.74/88: Рейтинг темы: голосов - 88, средняя оценка - 4.74
27 / 27 / 4
Регистрация: 14.02.2012
Сообщений: 135
.NET 4.x

Получение полного имени пользователя Windows

05.04.2013, 02:03. Показов 17957. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Столкнулся с неожиданной проблемой: как получить полное (отображаемое) имя пользователя винды?
То, которое показывается в меню Пуск, а не логин.

Желательно без API функций и использования внешних библиотек.
Вечер гугления результатов не дал.
Перепробовал:
VB.NET
1
2
3
        My.User.Name
        System.Environment.UserName
        System.Security.Principal.WindowsIdentity.GetCurrent.Name
Они возвращают логин или комп\логин, а мне нужно "ФИО", которое прописано в свойствах юзера.

Помогите пожалуйста...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.04.2013, 02:03
Ответы с готовыми решениями:

Получение имени пользователя по SkypeID
Привет всем, работаю через библу SKYPE4COMLib.dll Появился вопрос.. Хочу узнать полное имя человека зная его ник скайпа Например ...

Получение имени пользователя Windows средствами PHP
Как узнать имя пользователя Windows средствами PHP. Скрипт будет работать на LAMP сервере. Попробовал через Environment на WAMP...

Получение полного имени устройства аудиозахвата
Каким образом я могу получить следующую информацию обо всех устройствах аудиозахвата в системе: Полное имя устройства Index (0-last)...

23
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
05.04.2013, 03:45
Нужно подключить сборку System.DirectoryServices
C#
1
2
3
4
5
6
7
            using (System.DirectoryServices.DirectoryEntry domain = new
            System.DirectoryServices.DirectoryEntry(
            string.Format("WinNT://{0}/{1}", Environment.MachineName, Environment.UserName))
            )
            {
                MessageBox.Show(this, domain.Properties["FullName"].Value.ToString());
            }
1
27 / 27 / 4
Регистрация: 14.02.2012
Сообщений: 135
05.04.2013, 16:31  [ТС]
Работает! Спасибо)
Но почему так медленно? Не совсем понимаю куда он обращается, но программа виснет на секунд 7-10 до выдачи окна...
Проверял на локальном компе (не в домене).

Код VB.NET:
VB.NET
1
2
3
    Dim domain As New System.DirectoryServices.DirectoryEntry(
        String.Format("WinNT://{0}/{1}", Environment.MachineName, Environment.UserName))
    MsgBox(domain.Properties("FullName").Value.ToString())
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
05.04.2013, 23:35
Действительно, есть задержка, но только при первом обращении к свойству. Запрос делается в Active Directory, и связано это с учётными записями пользователей. Иначе информацию о пользователях не получить
0
27 / 27 / 4
Регистрация: 14.02.2012
Сообщений: 135
06.04.2013, 00:07  [ТС]
ViterAlex, можешь пояснить - как это "запрос в Active Directory", если я тестил на компе не в домене? обычный домашний...
Просто думаю - может есть какой-то способ обратиться к локальной системе?

Добавлено через 10 минут
upd: Потестил в домене:
Вылетает с ошибкой "Не найдено имя группы."(
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
06.04.2013, 00:41
Домашний комп под управлением системы не младше XP, это тоже домен. Сам для себя
Цитата Сообщение от MLF Посмотреть сообщение
ViterAlex, можешь пояснить - как это "запрос в Active Directory"
К сожалению, здесь я плаваю и сам бы с удовольствием прослушал три-четыре лекции на эту тему. Может быть, моё выражение и не совсем корректно, но так я себе это представляю
0
27 / 27 / 4
Регистрация: 14.02.2012
Сообщений: 135
06.04.2013, 04:52  [ТС]
Ясно, спасибо)
Вопрос "Как разобраться с ошибкой?" остаётся открытым, но для себя более простой способ:
VB.NET
1
xlApp.UserName 'xlApp это Microsoft.Office.Interop.Excel.Application
Так как имя юзера мне нужно было для использования при выводе в Excel - оказалось очень удобно и просто брать его оттуда же)
Хотя если у кого будут ещё идеи - было бы интересно)
0
Заблокирован
06.04.2013, 06:51
Цитата Сообщение от ViterAlex Посмотреть сообщение
три-четыре лекции на эту тему
не проблема можно устроить! у нас в отделе работает системный администратор с сертификатами от майкрософта о присвоении ему "Инженера Microsoft Corporation" 200 часов налета по директори, сервер 2003 - 2008

О цене можно договорится.
0
27 / 27 / 4
Регистрация: 14.02.2012
Сообщений: 135
15.04.2013, 18:33  [ТС]
Люди, помогите разобраться!
Оказалось, что всё таки нужно получать имя юзера домена. Я уже запутался во всём этом...
код из поста #3 Получение полного имени пользователя Windows не работает - ошибка.
И опять же вопрос - почему так много времени до этой ошибки проходит? Может кто-нибудь предложит ещё варианты?
0
 Аватар для Серж_87
1303 / 509 / 63
Регистрация: 09.08.2012
Сообщений: 2,056
15.04.2013, 22:22
Цитата Сообщение от MLF Посмотреть сообщение
Оказалось, что всё таки нужно получать имя юзера домена
VB.NET
1
2
'Имя пользователя:
Label6.Text = My.User.Name
не то?
0
27 / 27 / 4
Регистрация: 14.02.2012
Сообщений: 135
16.04.2013, 04:40  [ТС]
Цитата Сообщение от emenem97 Посмотреть сообщение
VB.NET
1
2
3
'Имя пользователя:
Label6.Text = My.User.Name
не то?
Ну почему не читаем первый пост?)

Цитата Сообщение от MLF Посмотреть сообщение
Перепробовал:
VB.NET
1
2
3
My.User.Name
 System.Environment.UserName
 System.Security.Principal.WindowsIdentity.GetCurrent.Name
Они возвращают логин или комп\логин, а мне нужно "ФИО", которое прописано в свойствах юзера.
Добавлено через 3 часа 10 минут
Отвечаю сам себе:

VB.NET
1
2
3
4
5
6
7
8
        Dim strUser As String = SystemInformation.UserName
        Dim strDomain As String = Environment.UserDomainName
 
        Dim sDir As String = "WinNT://" & strDomain & "/" & strUser
        Dim ADEntry As New System.DirectoryServices.DirectoryEntry(sDir)
        Dim strFullName As String = ADEntry.Properties("FullName").Value
 
        MsgBox(strFullName)
Работает и без каких либо задержек.

Добавлено через 7 минут
upd:
В домене никаких задержек почти мгновенно приходит верный ответ.
Потестил на домашнем - тоже работает, но с задержкой.
1
 Аватар для Серж_87
1303 / 509 / 63
Регистрация: 09.08.2012
Сообщений: 2,056
16.04.2013, 22:51
пару вопросов:
1) это только с .NET Framework 4.5 работает?
2) подскажите, какой класс необходимо импортировать и какие ссылки подключить чтобы работал этот код?
0
27 / 27 / 4
Регистрация: 14.02.2012
Сообщений: 135
16.04.2013, 22:57  [ТС]
Ах да... Извиняюсь:
Нужно подключить ссылку на System.DirectoryServices
В коде:
VB.NET
1
Imports System.DirectoryServices
Поддерживается начиная с версии 3.5 SP1 (Client Profile)
1
 Аватар для edward_freedom
1569 / 1448 / 303
Регистрация: 01.10.2011
Сообщений: 2,636
16.04.2013, 23:04
Цитата Сообщение от MLF Посмотреть сообщение
Ах да... Извиняюсь:
Не нужно извиняться за его слепоту
Цитата Сообщение от ViterAlex Посмотреть сообщение
Нужно подключить сборку System.DirectoryServices
0
 Аватар для Серж_87
1303 / 509 / 63
Регистрация: 09.08.2012
Сообщений: 2,056
16.04.2013, 23:07
Странно. У меня на Win 7 х64 программа подвисает секунд на пять, после чего пустое Msbox выскакивает.
А пример, который я привел выше показывает имя пользователя такое как и в меню Пуск (что по условию темы поста), но цепляет еще имя домена (но от него можно избавится)

Добавлено через 1 минуту
edward_freedom, что случилось? Вечер не задался?
0
16.04.2013, 23:11

Не по теме:

emenem97, Как можно было не увидеть второе сообщение??

0
27 / 27 / 4
Регистрация: 14.02.2012
Сообщений: 135
16.04.2013, 23:15  [ТС]
emenem97,
VB.NET
1
System.Environment.UserName
Будет возвращать имя без домена. Только это всё равно не то, что мне нужно.
Если в свойствах юзера задать "Полное имя" - оно будет отображаться в пуске, а не логин. Вот его мне и нужно получить.

Цитата Сообщение от emenem97 Посмотреть сообщение
Странно. У меня на Win 7 х64 программа подвисает секунд на пять, после чего пустое Msbox выскакивает.
Ну судя по тому, что твой пример возвращает "такое как и в меню Пуск" - полное имя у тебя не введено вообще. Поэтому и MsgBox пустой. Введи, ребутнись, потесть)
1
 Аватар для Серж_87
1303 / 509 / 63
Регистрация: 09.08.2012
Сообщений: 2,056
16.04.2013, 23:16
Цитата Сообщение от edward_freedom Посмотреть сообщение
Как можно было не увидеть второе сообщение??
а читал все, но о том что второе сообщение связанно с последним (через десяток сообщений) у меня и мысли не было.
0
16.04.2013, 23:21  [ТС]

Не по теме:

edward_freedom, вообще-то я ответил как раз на его сообщение о том, что я не указал ссылку)

0
 Аватар для Серж_87
1303 / 509 / 63
Регистрация: 09.08.2012
Сообщений: 2,056
16.04.2013, 23:31
Цитата Сообщение от MLF Посмотреть сообщение
Ну судя по тому, что твой пример возвращает "такое как и в меню Пуск" - полное имя у тебя не введено вообще. Поэтому и MsgBox пустой
так и было. Ввел имя, отичное от прежнего, теперь msbox выводит правильно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.04.2013, 23:31
Помогаю со студенческими работами здесь

Получение полного имени свойства объекта
Ситуация следующая. Необходимо получить ПОЛНОЕ имя любого свойства из класса namespace ConsoleApp1 { public class SuperClass2 ...

Отображение полного имени пользователя во входящих
Всем доброго времени суток, подкажите пожалуйста, как можно сие реализовать? Во входящих по колонке "Кто" используется...

Получение полного имени файла из input file
Всем привет! Ломаю голову уже второй день... Как получить полный путь к локальному файлу? Надо грузить данные в бд из файла Excel,...

Получение имени пользователя
Каким скриптом можно получить имя пользователя ?

Получение имени пользователя пк по ip
Есть ли возможность узнать текущее имя пользователя пк по IP, например 178.1##.5.## - Дима?...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru