Функция LsaLookupSids может возвращать старое имя пользователя, а не новое имя пользователя, если имя пользователя изменилось.

В этой статье описывается задержка обновления кэша в Windows.

Область применения: Windows 10 — все выпуски, Windows Server 2012 R2
Исходный номер базы знаний: 946358

Симптомы

Рассмотрим следующий сценарий.

  • На компьютере-члене домена приложение вызывает функцию LsaLookupSids для преобразования идентификатора безопасности (SID) в имя пользователя.
  • Имя пользователя было изменено на контроллере домена.

В этом сценарии функция LsaLookupSids может возвращать старое имя пользователя вместо нового. Это может помешать правильной работе приложения.

Причина

Локальный центр безопасности (LSA) кэширует сопоставление между идентификатором безопасности и именем пользователя в локальном кэше на компьютере-члене домена. Кэшированное имя пользователя не синхронизируется с контроллерами домена. LSA на компьютере-члене домена сначала запрашивает локальный кэш идентификаторов безопасности. Если существующее сопоставление уже находится в локальном кэше идентификаторов безопасности, LSA возвращает кэшированные сведения об имени пользователя, а не запрашивает контроллеры домена. Это поведение предназначено для повышения производительности.

У записей кэша истекает время ожидания, однако, скорее всего, повторяющиеся запросы приложений поддерживают существующую запись кэша в течение максимального времени существования записи кэша.

Обходной путь

Чтобы обойти эту проблему, отключите локальный кэш sid на компьютере-члене домена. Для этого выполните следующие действия:

  1. Откройте редактор реестра.

    Для этого в Windows XP или Windows Server 2003 нажмите кнопку Пуск, нажмите кнопку Выполнить, введите regedit и нажмите кнопку ОК.

    Для этого в Windows Vista и более новых версиях нажмите кнопку Пуск, введите regedit в поле Начать поиск и нажмите клавишу ВВОД.

  2. Найдите и щелкните правой кнопкой мыши следующий подраздел реестра:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa

  3. Наведите указатель мыши на пункт Создать, а затем щелкните Значение DWORD.

  4. Введите LsaLookupCacheMaxSize и нажмите клавишу ВВОД.

  5. Щелкните правой кнопкой мыши LsaLookupCacheMaxSize и выберите команду Изменить.

  6. В поле Значение введите 0 и нажмите кнопку ОК.

  7. Закройте редактор реестра.

Примечание.

Запись реестра LsaLookupCacheMaxSize задает максимальное число кэшированных сопоставлений, которые можно сохранить в локальном кэше sid. Максимальное число по умолчанию — 128. Если для записи реестра LsaLookupCacheMaxSize задано значение 0, кэш локальных идентификаторов безопасности отключается.

Состояние

Поведение выполняется по умолчанию.

Дополнительная информация

LSA поддерживает кэш идентификаторов безопасности на компьютерах- членах домена. В этом кэше хранятся сопоставления между идентификаторами БЕЗОПАСНОСТИ и именами пользователей. Если сведения о идентификаторе безопасности существуют в локальном кэше, LSA возвращает сведения об имени кэшированного пользователя, а не проверяет, изменилось ли имя пользователя.

Локальный кэш SID помогает уменьшить рабочую нагрузку контроллера домена и сетевой трафик. Однако между локальным кэшем и контроллерами домена может возникнуть несоответствие.

Ссылки

TechNet содержит статью, посвященную Sid-Name подходам к разрешению, включая подробное описание этого кэша:

Как можно сопоставить идентификаторы безопасности и имена учетных записей в Windows

Дополнительные сведения о функции LsaLookupSids см. на следующем веб-сайте Майкрософт:

Функция LsaLookupSids