C++ 为什么在我的Active Directory密码过滤器DLL中用户名以$结尾?
我有一个自定义的Active Directory密码过滤器DLL 在双域DC(Windows Server 2012 R2)上,密码过滤器有时会接收带有美元符号(C++ 为什么在我的Active Directory密码过滤器DLL中用户名以$结尾?,c++,active-directory,windows-server-2012-r2,C++,Active Directory,Windows Server 2012 R2,我有一个自定义的Active Directory密码过滤器DLL 在双域DC(Windows Server 2012 R2)上,密码过滤器有时会接收带有美元符号($)的用户名 用户的帐户名是JSMITH 密码过滤器DLL报告JSMITH$更改了他们的密码 为什么会这样 extern“C”\u declspec(dllexport)NTSTATUS\u stdcall密码更改通知( _在字符串用户名中, _在uulong地区, _在\uPUNICODE\u字符串中输入新密码 ) { //设置进程创
$
)的用户名
JSMITH
JSMITH$
更改了他们的密码extern“C”\u declspec(dllexport)NTSTATUS\u stdcall密码更改通知(
_在字符串用户名中,
_在uulong地区,
_在\uPUNICODE\u字符串中输入新密码
)
{
//设置进程创建参数
STARTUPINFO startupInformation;
处理信息处理信息;
零内存(&startupInformation,sizeof(startupInformation));
零内存(&processInformation,sizeof(processInformation));
//准备论据
std::wstring参数=std::wstring(用户名->缓冲区)
+L“
+std::wstring(新密码->缓冲区);
// ...
用户名(又名AD中的属性)最后自动包含$
的唯一时间是用于计算机帐户。因此,它可能只是报告计算机更新了密码
我猜也许JSMITH$
只是一个虚构的例子,因为JSMITH
听起来像一个用户帐户
但是,如果您愿意,您可以在用户用户名的末尾显式地添加一个
$
。这很奇怪。在这种情况下,除了后缀$
,他们实际上是人类用户的sAMAccountName
(JSMITH
是匿名的,但除此之外这就像我现在查看的一个帐户),密码过滤器DLL记录JSMITH$
。我查询(&(objectCategory=user)(sAMAccountName=*JSMITH*)
,我只使用(objectCategory=user)返回JSMITH
查询中的
将排除任何计算机帐户(如果有)。如果只搜索(sAMAccountName=JSMITH*)
,你找到其他结果了吗?哦,你完全正确。我不知道域名是如何设置的,但很明显,计算机帐户与它们所属的用户名称相同。我们中最好的人都有这样的情况:)但这是一种奇怪的做法。这可能是微软的一种编程语言使用$
作为字符串终止符时遗留下来的一种古老做法。