我有一个自定义 Active Directory 密码过滤器 DLL。
在双域 DC (Windows Server 2012 R2) 上,密码筛选器有时会收到带有美元符号 ($
) 的用户名。
- 用户的帐户名为
JSMITH
。 - 密码过滤器 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/