powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Получить ФИО пользователя учётной записи
32 сообщений из 32, показаны все 2 страниц
Получить ФИО пользователя учётной записи
    #39787284
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как получить ФИО пользователя?
Например, логин юзера ivanov_ii, а в меню пуск написано Иванов Иван Иваныч, вот это как раз и надо получить.
В гугле говорят, что надо юзать LDAP. Однако, реальных примеров не встречал.
Есть такое:
Код: plaintext
1.
hr = ADsGetObject(L"LDAP://CN=computers,DC=mydomain,DC=local", IID_IADsContainer, (void**) &pCont );


В Borland C++ Builder 6.0 ругается на
(void**) &pCont

Знаю, что на VB6 это выглядит так:
Код: vbnet
1.
2.
3.
4.
5.
6.
Sub asdas()
Set SI_ = CreateObject("ADSystemInfo")
Set Un_ = GetObject("LDAP://" & SI_.UserName)
UZ_ = Un_.DisplayName
msgbox UZ_
End Sub


Оно возвращает ФИО из учётной записи пользователя, вошедшего в домен. А не его логин.
...
Рейтинг: 0 / 0
Получить ФИО пользователя учётной записи
    #39787306
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LDAP - это из пушки по воробьям
юзай пока это
...
Рейтинг: 0 / 0
Получить ФИО пользователя учётной записи
    #39787307
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cerebrum,
Пробовал, возвращает 1, при конверте получаю ник, а фио.
...
Рейтинг: 0 / 0
Получить ФИО пользователя учётной записи
    #39787309
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Получить ФИО пользователя учётной записи
    #39787312
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя лучше https://docs.microsoft.com/en-us/windows/desktop/api/lmaccess/ns-lmaccess-_user_info_4
Документация говорит, что вместо 3 надо использовать 4, но это не отменяет использование usri4_full_name
...
Рейтинг: 0 / 0
Получить ФИО пользователя учётной записи
    #39787313
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
там же можно глянуть что внутри usri4_comment
...
Рейтинг: 0 / 0
Получить ФИО пользователя учётной записи
    #39787315
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelЕсть такое:
Код: plaintext
1.
hr = ADsGetObject(L"LDAP://CN=computers,DC=mydomain,DC=local", IID_IADsContainer, (void**) &pCont );



В Borland C++ Builder 6.0 ругается на
(void**) &pCont

Код: plaintext
1.
2.
3.
void* pCont;
...
hr = ADsGetObject(L"LDAP://CN=computers,DC=mydomain,DC=local", IID_IADsContainer, &pCont );
...
Рейтинг: 0 / 0
Получить ФИО пользователя учётной записи
    #39787351
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cerebrum,
Здорово, почитал, вроде интересно написано, но опять же без примеров использования.
Учтите, логин неизвестен, домен неизвестен.
...
Рейтинг: 0 / 0
Получить ФИО пользователя учётной записи
    #39787386
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelЗдорово, почитал, вроде интересно написано, но опять же без примеров использования.
Учтите, логин неизвестен, домен неизвестен.
Как описал задачу, так тебе и ответил.
Ты нигде не говорил, что тебе нужно проанализировать Organization Unit или домен целиком, вытащить из него всех пользователей и извлечь их полные сведения об имени. Речь шла о том, что есть логин ivanov_ii и по нему нужно получить user friendly имя

Если нужно перебрать всех пользователей и вытащить их данные, то юзай это + USER_INFO_10

Если имя домена не известно, то его можно узнать из NetGetAnyDCName или NetGetDCName

Есть и такое
...
Рейтинг: 0 / 0
Получить ФИО пользователя учётной записи
    #39787401
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cerebrum,
Не, не. Я не говорил что известен логин и домен.
Надо узнать фио юзера, который зашёл под собой, то есть текущего юзера, который запустил программу/код.
Я как бы считал, что это понятно сразу...
Прошу прощения, за не полную информацию тогда.
...
Рейтинг: 0 / 0
Получить ФИО пользователя учётной записи
    #39787402
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cerebrum,
и юзеров перебирать не надо, надо текущего
...
Рейтинг: 0 / 0
Получить ФИО пользователя учётной записи
    #39787441
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelи юзеров перебирать не надо, надо текущего
GetUserName
...
Рейтинг: 0 / 0
Получить ФИО пользователя учётной записи
    #39787444
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cerebrum, GetUserName пробовал - возвращает ник... :-(
...
Рейтинг: 0 / 0
Получить ФИО пользователя учётной записи
    #39787445
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не совсем понятно что автору надо. Под Windows переменные окружения содержат
имя текущего пользователя и домен.

https://www.itprotoday.com/cloud-computing/what-environment-variables-are-available-windows

Если нужно смотреть других пользователей то наверное надо смотреть не LDAP (хотя он тоже в деле)
а более проприетарные WinAPI функции которые спецом заточены для Windows-домена.
...
Рейтинг: 0 / 0
Получить ФИО пользователя учётной записи
    #39787447
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,
Переменные не содержат фио, переменные содержать ник(логин)
...
Рейтинг: 0 / 0
Получить ФИО пользователя учётной записи
    #39787449
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,
Смотреть надо ТЕКУЩЕГО пользователя.
...
Рейтинг: 0 / 0
Получить ФИО пользователя учётной записи
    #39787452
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelCerebrum, GetUserName пробовал - возвращает ник... :-(
Ты говоришь, что тебе надо получить информацию для текущего пользователя, но его учетную запись (логин) ты НЕ знаешь. Используя GetUserName можно запросить логин текущего пользователя и используя его в NetGetUserInfo запросить все остальные недостающие сведения USER_INFO_10
...
Рейтинг: 0 / 0
Получить ФИО пользователя учётной записи
    #39787461
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cerebrum,
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
#include <activeds.h>
#include <stdio.h>
 
   HRESULT hr;
 
   hr = CoInitialize(NULL);
 hrh = 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)) {
      hrh = ADsGetObject(L"LDAP://"+pSys->get_UserName(&bstr), IID_IADs, (void**) &pObject);
   }


???
...
Рейтинг: 0 / 0
Получить ФИО пользователя учётной записи
    #39787468
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тебе рано пока, отдай задачу тому, кто шарит в языке, либо садись за буквари

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
#include "lm.h"
#pragma comment(lib, "netapi32.lib")

DWORD dwLoginLen = 256UL;
WCHAR tUserLogin[256] = {0};
if (::GetUserName(tUserLogin, &dwLoginLen))
{
	BYTE* pbUserInfo = nullptr;
	if (::NetUserGetInfo(NULL, tUserLogin, 10UL, &pbUserInfo) == NERR_Success)
	{
		auto pUserInfo = reinterpret_cast<PUSER_INFO_10>(pbUserInfo);

		::MessageBox(NULL, pUserInfo->usri10_full_name, pUserInfo->usri10_name, MB_ICONINFORMATION);
		::NetApiBufferFree(pbUserInfo);
	}
}


??
...
Рейтинг: 0 / 0
Получить ФИО пользователя учётной записи
    #39787681
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cerebrum,
Ошибки, начиная с 3й строки, не может конвертануть wchar в char, и дальше в каждой строке аналогичные ошибки, только типы разные.
...
Рейтинг: 0 / 0
Получить ФИО пользователя учётной записи
    #39787904
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Anatoly MoskovskyBlackeAngel,

А с какой целью вы пытаетесь писать программу на С++ не зная даже его основ?
Диверсию готовите?
Для того что бы узнать его, точнее именно тех мест, которые интересуют, а не всего.
...
Рейтинг: 0 / 0
Получить ФИО пользователя учётной записи
    #39787908
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelДля того что бы узнать его, точнее именно тех мест, которые интересуют, а не всего
весь не обязательно, основ достаточно
...
Рейтинг: 0 / 0
Получить ФИО пользователя учётной записи
    #39787988
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelОшибки, начиная с 3й строки, не может конвертануть wchar в char, и дальше в каждой строке аналогичные ошибки, только типы разные.
установи в свойствах проекта - Unicode, либо добавь
#include "tchar.h"
и замени WCHAR на TCHAR
BlackeAngelnullptr вообще не знает
замени на NULL
...
Рейтинг: 0 / 0
Получить ФИО пользователя учётной записи
    #39787997
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelДля того что бы узнать его, точнее именно тех мест, которые интересуют, а не всего.
тогда ты начал не с того края, начинать нужно было с
Уроки С++
и только потом
Windows via C/C++. Программирование на языке Visual C++
Программирование серверных приложений для Microsoft Windows 2000
...
Рейтинг: 0 / 0
Получить ФИО пользователя учётной записи
    #39788079
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cerebrum,
BlackeAngelBorland C++ Builder 6.0
...
Рейтинг: 0 / 0
Получить ФИО пользователя учётной записи
    #39788080
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cerebrum, а так завтра попробую, ваши рекомендации
...
Рейтинг: 0 / 0
Получить ФИО пользователя учётной записи
    #39788088
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelCerebrum,
BlackeAngelBorland C++ Builder 6.0
Какая разница. Или есть собеседование на язык борланда?
...
Рейтинг: 0 / 0
Получить ФИО пользователя учётной записи
    #39788096
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelBorland C++ Builder 6.0
выкинь его

бесплатно
...
Рейтинг: 0 / 0
Получить ФИО пользователя учётной записи
    #39788097
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CerebrumBlackeAngelBorland C++ Builder 6.0
выкинь его

бесплатно

Как только Microsoft выкинет фреймвёрк
...
Рейтинг: 0 / 0
Получить ФИО пользователя учётной записи
    #39788109
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelКак только Microsoft выкинет фреймвёрк
какой из них :)

тебя ж никто его не заставляет использовать - поставь PlatformSDK и пиши на чистом С/С++
а то так окажется, что тебе и WinAPI тоже не подходит, тогда ты форумом ошибся - ассемблерщиков тут нет (вроде)
...
Рейтинг: 0 / 0
Получить ФИО пользователя учётной записи
    #39788143
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cerebrum,
Код: plaintext
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.
36.
37.
38.
39.
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
#include "lm.h"
#include "tchar.h"
#pragma comment(lib, "netapi32.lib")
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)
{


DWORD dwLoginLen = 256UL;
TCHAR tUserLogin[256] = {0};
if (::GetUserName(tUserLogin, &dwLoginLen))
{
	BYTE* pbUserInfo = NULL;
	if (::NetUserGetInfo(NULL, tUserLogin, 10UL, &pbUserInfo) == NERR_Success)
	{
		auto pUserInfo = reinterpret_cast<PUSER_INFO_10>(pbUserInfo);

		::MessageBox(NULL, pUserInfo->usri10_full_name, pUserInfo->usri10_name, MB_ICONINFORMATION);
		::NetApiBufferFree(pbUserInfo);
	}
}
}
//---------------------------------------------------------------------------



ошибки
Build
[C++ Error] Unit1.cpp(30): E2034 Cannot convert 'char *' to 'const wchar_t *'
[C++ Error] Unit1.cpp(30): E2342 Type mismatch in parameter 'username' (wanted 'const wchar_t *', got 'char *')
[C++ Error] Unit1.cpp(32): E2034 Cannot convert '_USER_INFO_10 *' to 'int'
[C++ Error] Unit1.cpp(34): E2288 Pointer to structure required on left side of -> or ->*
[C++ Error] Unit1.cpp(34): E2288 Pointer to structure required on left side of -> or ->*
[C++ Warning] Unit1.cpp(36): W8004 'pUserInfo' is assigned a value that is never used
...
Рейтинг: 0 / 0
Получить ФИО пользователя учётной записи
    #39788160
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
32 сообщений из 32, показаны все 2 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / Получить ФИО пользователя учётной записи
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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