English 中文(简体)
从win32api C中的LDAPMessage对象检索windows 2000以前版本的登录名++
原标题:retrieving pre windows 2000 logon name from LDAPMessage object in win32api C++

我被要求查看windows服务,该服务使用win32LDAP API从Active Directory树中检索数据,并将JSON数据输出到文本文件。它工作得很好,但我需要修改它,以便我获得windows 2000之前的登录名。该服务是用c++编写的。

该服务已经成功地使用以下方法检索了各种其他属性字符串:

PTSTR *pszValues=ldap_get_values(pLdap,pEntry,szAttribute);

以及:

if (_tcscmp(szAttribute,TEXT("uUsnChanged"))==0)            // uSNChanged is an example of an attribute
pItemInfo->uUsnChanged=_tcstoui64(pszValues[0],NULL,10);    // pItemInfo is a struct defined elsewhere to hold the results for any given entry

我看了http://msdn.microsoft.com/en-us/library/ms679021(v=VS.85).aspx查看是否有用于windows 2000以前版本登录的属性或类似的属性,希望我可以将其添加为另一个szAttribute(在本例中替换“uUsnChanged”),但没有成功。看看API,我一直无法想出获取这些信息的方法。

我找到了属性sAMAccountName,我认为它可以提供所需的信息,但它只为我提供DOMAIN/name格式的name部分。典型的,这是我想要的另一部分!

有人知道如何从pEntry中获取pre-windows2000字符串吗?

@JPBlanc在测试服务器上运行时,我们现在得到了正确的nETBIOSName属性。该应用程序的工作假设是每个DC最多有一个nETBIOS名称属性。它通过执行以下操作找到它:

使用<code>ldap_init(NULL,0)获取默认主机

使用<code>ldap_search_s(pLdap,NULL,ldap_COPE_BASE,NULL,pszAttrs,FALSE,&;pResults)获取配置命名上下文将连接句柄作为第一个参数传入

使用<code>ldap_get_values(pLdap,pEntry,TEXT(“configurationNamingContext”))检索configurationNamingContext属性

将“CN=Partitions”连接到字符串的开头,给出类似“CN=Partitions,CN=Configuration,DC=domain,DC=com,DC=au”的内容

然后,它使用<code>ldap_search_s(pLdap,szPartitionNC,ldap_COPE_SUBTREE,TEXT(“(nETBIOS名称=*)”),pszAttrs,FALSE,&;p结果)

然后它在结果中循环寻找任何具有nETBIOSName属性的东西,一旦找到一个,它就会跳出循环并返回值。

你知道这是否足以在任何AD配置中工作吗?

最佳回答

请注意,windows 2000以前版本的域的域部分可能与用户主体名称完全不同(user@domain)用于登录Active Directory。DOMAIN是主域控制器名称或Netbios域名。DOMAIN是在创建域的过程中创建的,默认情况下它是DNS名称的一部分,但在创建域时可以完全更改。

您可以使用eTBIOSName属性找到它:

ldifde -f netbios.ldf -d "CN=Partitions,CN=Configuration,DC=your-DNS-Name" -r "(netbiosname=*)"

最好的过滤器是

(&(objectcategory=crossref)(dnsHostName=<DomainDNSName>)(netbiosname=*))
问题回答

SAM帐户名称属性(sAMAccountName)





相关问题
Undefined reference

I m getting this linker error. I know a way around it, but it s bugging me because another part of the project s linking fine and it s designed almost identically. First, I have namespace LCD. Then I ...

C++ Equivalent of Tidy

Is there an equivalent to tidy for HTML code for C++? I have searched on the internet, but I find nothing but C++ wrappers for tidy, etc... I think the keyword tidy is what has me hung up. I am ...

Template Classes in C++ ... a required skill set?

I m new to C++ and am wondering how much time I should invest in learning how to implement template classes. Are they widely used in industry, or is this something I should move through quickly?

Print possible strings created from a Number

Given a 10 digit Telephone Number, we have to print all possible strings created from that. The mapping of the numbers is the one as exactly on a phone s keypad. i.e. for 1,0-> No Letter for 2->...

typedef ing STL wstring

Why is it when i do the following i get errors when relating to with wchar_t? namespace Foo { typedef std::wstring String; } Now i declare all my strings as Foo::String through out the program, ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

Window iconification status via Xlib

Is it possible to check with the means of pure X11/Xlib only whether the given window is iconified/minimized, and, if it is, how?

热门标签