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

标签 c++ active-directory windows-server-2012-r2

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

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

  1. 用户的帐户名为 JSMITH
  2. 密码过滤器 DLL 报告 JSMITH$ 更改了密码。

为什么会发生这种情况?

extern "C" __declspec(dllexport) NTSTATUS __stdcall PasswordChangeNotify(
    _In_ PUNICODE_STRING UserName,
    _In_ ULONG RelativeId,
    _In_ PUNICODE_STRING NewPassword
)
{
    // Set up process creation arguments
    STARTUPINFO startupInformation;
    PROCESS_INFORMATION processInformation;

    ZeroMemory(&startupInformation, sizeof(startupInformation));
    ZeroMemory(&processInformation, sizeof(processInformation));

    // Prepare arguments
    std::wstring arguments = std::wstring(UserName->Buffer)
        + L" "
        + std::wstring(NewPassword->Buffer);

    // ...

最佳答案

唯一一次用户名(AD 中的 sAMAccountName 属性)自动在末尾包含 $ 是针对计算机帐户的。和computer accounts do actually have passwords ,因此它可能只是报告计算机更新了其密码。

我猜 JSMITH$ 可能只是编造的例子,因为 JSMITH 听起来像一个用户帐户。

但是,如果您愿意,您可以在用户用户名末尾显式放置 $

关于c++ - 为什么我的 Active Directory 密码过滤器 DLL 中的用户名以 $ 结尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58700265/

相关文章:

c++ - 非法调用非静态成员函数

c++ - dynamic_cast<>有多快

java - Gradle 代理配置

ssl - URL 应该点击 https 而不是 http

tls1.2 - Windows Server 2012 R2中的TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

oauth - ADFS 3.0 oAuth oauth2/token -> 没有注册协议(protocol)

c++ - 为什么我的类(class)没有链接?

c++ - Qml访问 ListView 项

c# - 使用 System.DirectoryServices.AccountManagement 程序集中的 PrincipalContext 不断获取异常

c# - 给定 UserPrincipal 对象,如何从 Active Directory 获取 "Company"和 "Department"?