Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Получить ФИО пользователя учётной записи

Ответить
Настройки темы
C/C++ - Получить ФИО пользователя учётной записи

Аватара для blackeangel

Старожил


Сообщения: 329
Благодарности: 3

Профиль | Отправить PM | Цитировать


Как получить ФИО пользователя?
Например, логин юзера ivanov_ii, а в меню пуск написано Иванов Иван Иваныч, вот это как раз и надо получить.
В гугле говорят, что надо юзать LDAP. Однако, реальных примеров не встречал.
Есть такое:
Код: Выделить весь код
hr = ADsGetObject(L"LDAP://CN=computers,DC=mydomain,DC=local", IID_IADsContainer, (void**) &pCont );
В Borland C++ Builder 6.0 ругается на
Код: Выделить весь код
(void**) &pCont
Знаю, что на VB6 это выглядит так:
Код: Выделить весь код
Sub asdas()
Set SI_ = CreateObject("ADSystemInfo")
Set Un_ = GetObject("LDAP://" & SI_.UserName)
UZ_ = Un_.DisplayName
msgbox UZ_
End Sub
Оно возвращает ФИО из учётной записи пользователя, вошедшего в домен. А не его логин.

Отправлено: 12:08, 17-03-2019

 

Ветеран


Сообщения: 3806
Благодарности: 824

Профиль | Отправить PM | Цитировать


Чтобы продать что-нибудь ненужное, надо сначала купить что-нибудь ненужное © Матроскин

Чтобы получить ФИО пользователя нужно сначала, чтобы кто-то куда-то его вписал. Расскажите, куда у вас по регламенту вписывают ФИО?

Отправлено: 19:48, 17-03-2019 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для blackeangel

Старожил


Сообщения: 329
Благодарности: 3

Профиль | Отправить PM | Цитировать


Цитата Busla:
Чтобы получить ФИО пользователя нужно сначала, чтобы кто-то куда-то его вписал. Расскажите, куда у вас по регламенту вписывают ФИО? »
Честно, не знаю куда его выписывают админы, да это не суть важно. Надо получить фио текущего юзера, причём логин и домен неизвестны.
Код от vb6 всё каким то чудом определяет сам.

-------
Забудем боль, забудем страх -
И только ветер в парусах!


Отправлено: 19:55, 17-03-2019 | #3


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


blackeangel, никакого чуда.

Вы не можете перевести приведённый Вами пример с использованием IADsADSystemInfo с VB на C++?

Отправлено: 21:05, 17-03-2019 | #4


Аватара для blackeangel

Старожил


Сообщения: 329
Благодарности: 3

Профиль | Отправить PM | Цитировать


Iska, Здравствуйте) Верно. Даже не знаю с какого конца заходить.

-------
Забудем боль, забудем страх -
И только ветер в парусах!


Отправлено: 21:07, 17-03-2019 | #5


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


blackeangel, ну, вот посмотрите частичный пример на C++:
Цитата:
The following C++ code example retrieves the Windows system information. For brevity, error checking is omitted.
Код: Выделить весь код
#include <activeds.h>
#include <stdio.h>
 
int main()
{
   HRESULT hr;
 
   hr = CoInitialize(NULL);
 
    IADsADSystemInfo *pSys;
    hr = CoCreateInstance(CLSID_ADSystemInfo,
                          NULL,
                          CLSCTX_INPROC_SERVER,
                          IID_IADsADSystemInfo,
                          (void**)&pSys);
 
   BSTR bstr;
   hr = pSys->get_UserName(&bstr);
   if (SUCCEEDED(hr)) {
      printf("User: %S\n", bstr);
      SysFreeString(bstr);
   }
 
   hr = pSys->get_ComputerName(&bstr);
   if (SUCCEEDED(hr)) {
      printf("Computer: %S\n", bstr);
      SysFreeString(bstr);
   }
 
   hr = pSys->get_DomainDNSName(&bstr);
   if (SUCCEEDED(hr)) {
      printf("Domain: %S\n", bstr);
      SysFreeString(bstr);
   }
 
   hr = pSys->get_PDCRoleOwner(&bstr);
   if (SUCCEEDED(hr)) {
      printf("PDC Role owner: %S\n", bstr);
      SysFreeString(bstr);
   }
 
   if(pSys) {
      pSys->Release();
   }
 
   CoUninitialize();
   return 0;
}
по вышеприведённой ссылке.

P.S. Для преобразований видов имён можно пользовать IADsNameTranslate | Microsoft Docs.

Отправлено: 21:24, 17-03-2019 | #6


Аватара для blackeangel

Старожил


Сообщения: 329
Благодарности: 3

Профиль | Отправить PM | Цитировать


Iska, это уже видел, и очень плохо
Цитата:
Minimum supported client Windows Vista
А надо WinXP.

И так же непонятно, что подавать, какие аргументы? Или ничего не надо?

-------
Забудем боль, забудем страх -
И только ветер в парусах!


Отправлено: 21:59, 17-03-2019 | #7


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


blackeangel, я не знаю, как там на C++, но на WSH у меня сие работало ещё на Windows 2000.

Отправлено: 22:30, 17-03-2019 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Получить ФИО пользователя учётной записи

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
2008 R2 - [решено] Поиск пользователя по ФИО в AD через командную строку dartne Windows Server 2008/2008 R2 8 06-06-2016 11:24
Удаление учётной записи. nyb-nybom Хочу все знать 9 11-02-2016 01:50
Как изменить ФИО в уч. записи Skype Work700 Хочу все знать 2 02-09-2014 19:04
Разное - Как переименовать папку учётной записи пользователя? DevJudgin Microsoft Windows 7 1 10-08-2013 16:04
Доступ - Можно ли отформатировать диск С, с учётной записи пользователя? Derpy_Hooves Хочу все знать 3 22-04-2013 22:46




 
Переход