Почему имена пользователей заканчиваются на $ в моей DLL-библиотеке фильтра паролей Active Directory? - PullRequest
1 голос
/ 04 ноября 2019

У меня есть пользовательская DLL-библиотека фильтра паролей Active Directory.

На контроллере домена с двумя доменами (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);

    // ...

1 Ответ

2 голосов
/ 04 ноября 2019

Единственное время, когда имя пользователя (или атрибут sAMAccountName в AD) автоматически содержит $ в конце, относится к учетным записям компьютеров. И учетные записи компьютеров на самом деле имеют пароли , поэтому он может просто сообщать, что компьютер обновил свой пароль.

Я предполагаю, что, возможно, JSMITH$ был просто выдуманным примером, поскольку JSMITHзвучит как учетная запись пользователя.

Однако вы можете явно поставить $ в конце имени пользователя, если хотите.

...