Показать полную графическую версию : Получить ФИО пользователя учётной записи
blackeangel
17-03-2019, 12:08
Как получить ФИО пользователя?
Например, логин юзера 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
Оно возвращает ФИО из учётной записи пользователя, вошедшего в домен. А не его логин.
Чтобы продать что-нибудь ненужное, надо сначала купить что-нибудь ненужное © Матроскин
Чтобы получить ФИО пользователя нужно сначала, чтобы кто-то куда-то его вписал. Расскажите, куда у вас по регламенту вписывают ФИО?
blackeangel
17-03-2019, 19:55
Чтобы получить ФИО пользователя нужно сначала, чтобы кто-то куда-то его вписал. Расскажите, куда у вас по регламенту вписывают ФИО? »
Честно, не знаю куда его выписывают админы, да это не суть важно. Надо получить фио текущего юзера, причём логин и домен неизвестны.
Код от vb6 всё каким то чудом определяет сам.
blackeangel, никакого чуда.
Вы не можете перевести приведённый Вами пример с использованием IADsADSystemInfo (https://docs.microsoft.com/ru-ru/windows/desktop/ADSI/iadsadsysteminfo-property-methods) с VB на C++?
blackeangel
17-03-2019, 21:07
Iska, Здравствуйте) Верно. Даже не знаю с какого конца заходить.
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 (https://docs.microsoft.com/en-us/windows/desktop/api/iads/nn-iads-iadsnametranslate).
blackeangel
17-03-2019, 21:59
Iska, это уже видел, и очень плохо
Minimum supported client Windows Vista
А надо WinXP.
И так же непонятно, что подавать, какие аргументы? Или ничего не надо?
blackeangel, я не знаю, как там на C++, но на WSH у меня сие работало ещё на Windows 2000.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.