Функция LsaLookupSids может возвращать старое имя пользователя, а не новое имя пользователя, если имя пользователя изменилось.
В этой статье описывается задержка обновления кэша в Windows.
Область применения: Windows 10 — все выпуски, Windows Server 2012 R2
Исходный номер базы знаний: 946358
Симптомы
Рассмотрим следующий сценарий.
- На компьютере-члене домена приложение вызывает функцию LsaLookupSids для преобразования идентификатора безопасности (SID) в имя пользователя.
- Имя пользователя было изменено на контроллере домена.
В этом сценарии функция LsaLookupSids может возвращать старое имя пользователя вместо нового. Это может помешать правильной работе приложения.
Причина
Локальный центр безопасности (LSA) кэширует сопоставление между идентификатором безопасности и именем пользователя в локальном кэше на компьютере-члене домена. Кэшированное имя пользователя не синхронизируется с контроллерами домена. LSA на компьютере-члене домена сначала запрашивает локальный кэш идентификаторов безопасности. Если существующее сопоставление уже находится в локальном кэше идентификаторов безопасности, LSA возвращает кэшированные сведения об имени пользователя, а не запрашивает контроллеры домена. Это поведение предназначено для повышения производительности.
У записей кэша истекает время ожидания, однако, скорее всего, повторяющиеся запросы приложений поддерживают существующую запись кэша в течение максимального времени существования записи кэша.
Обходной путь
Чтобы обойти эту проблему, отключите локальный кэш sid на компьютере-члене домена. Для этого выполните следующие действия:
Откройте редактор реестра.
Для этого в Windows XP или Windows Server 2003 нажмите кнопку Пуск, нажмите кнопку Выполнить, введите regedit и нажмите кнопку ОК.
Для этого в Windows Vista и более новых версиях нажмите кнопку Пуск, введите regedit в поле Начать поиск и нажмите клавишу ВВОД.
Найдите и щелкните правой кнопкой мыши следующий подраздел реестра:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
Наведите указатель мыши на пункт Создать, а затем щелкните Значение DWORD.
Введите LsaLookupCacheMaxSize и нажмите клавишу ВВОД.
Щелкните правой кнопкой мыши LsaLookupCacheMaxSize и выберите команду Изменить.
В поле Значение введите 0 и нажмите кнопку ОК.
Закройте редактор реестра.
Примечание.
Запись реестра LsaLookupCacheMaxSize задает максимальное число кэшированных сопоставлений, которые можно сохранить в локальном кэше sid. Максимальное число по умолчанию — 128. Если для записи реестра LsaLookupCacheMaxSize задано значение 0, кэш локальных идентификаторов безопасности отключается.
Состояние
Поведение выполняется по умолчанию.
Дополнительная информация
LSA поддерживает кэш идентификаторов безопасности на компьютерах- членах домена. В этом кэше хранятся сопоставления между идентификаторами БЕЗОПАСНОСТИ и именами пользователей. Если сведения о идентификаторе безопасности существуют в локальном кэше, LSA возвращает сведения об имени кэшированного пользователя, а не проверяет, изменилось ли имя пользователя.
Локальный кэш SID помогает уменьшить рабочую нагрузку контроллера домена и сетевой трафик. Однако между локальным кэшем и контроллерами домена может возникнуть несоответствие.
Ссылки
TechNet содержит статью, посвященную Sid-Name подходам к разрешению, включая подробное описание этого кэша:
Как можно сопоставить идентификаторы безопасности и имена учетных записей в Windows
Дополнительные сведения о функции LsaLookupSids см. на следующем веб-сайте Майкрософт:
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по