Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么在我的Active Directory密码过滤器DLL中用户名以$结尾?_C++_Active Directory_Windows Server 2012 R2 - Fatal编程技术网

C++ 为什么在我的Active Directory密码过滤器DLL中用户名以$结尾?

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字符串中输入新密码 ) { //设置进程创

我有一个自定义的Active Directory密码过滤器DLL

在双域DC(Windows Server 2012 R2)上,密码过滤器有时会接收带有美元符号(
$
)的用户名

  • 用户的帐户名是
    JSMITH
  • 密码过滤器DLL报告
    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*)
    ,你找到其他结果了吗?哦,你完全正确。我不知道域名是如何设置的,但很明显,计算机帐户与它们所属的用户名称相同。我们中最好的人都有这样的情况:)但这是一种奇怪的做法。这可能是微软的一种编程语言使用
    $
    作为字符串终止符时遗留下来的一种古老做法。