Невозможно загрузить профиль пользователя на терминальной ферме

Невозможно загрузить профиль пользователя на терминальной ферме

Терминальная ферма

Добрый день! Уважаемые читатели IT блога pyatilistnik.org. Сегодня, хочу добавить в копилку статей про терминальные и RDS фермы, еще одну публикацию, которая поможет вам решать проблему, при которой пользователь не может попасть на рабочий стол удаленного компьютера и, где после авторизации на серверах посредниках (Connection Brokers) он получает ошибку: Службе "Служба профилей пользователя" не удалось войти в систему. Невозможно загрузить профиль пользователя. Давайте я покажу, что можно сделать в этой ситуации и решить ее с минимальными последствиями. Описанные ниже методы помогут решить проблему, как на серверных версиях Windows с 2008 R2 до Windows Server 2016, так и клиентских, например, Windows 10.

Описание проблемы с временным профиле

Пользователь подключается к удаленному рабочему столу, и после ввода логина с паролем, видит сообщение:

Службе "Служба профилей пользователя" не удалось войти в систему. Невозможно загрузить профиль пользователя.

служба профилей пользователя невозможно загрузить профиль пользователя

Как происходит формирование профиля на терминальном сервере

Прежде, чем мы начнем решать ошибку с невозможностью загрузить профиль пользователя windows, я бы хотел напомнить схему, как работает подключение к терминальной ферме Windows Server 2012 R2-16.

И так, у вас есть клиенты, например, на Windows 10 1803, они с помощью встроенного клиента, для подключения к удаленному рабочему столу (mstsc), подключаются по DNS имени, к адресу терминальной фермы, в которую может входить большое количество серверов. Первым на пути подключения, пользователя встречает сервер с ролью "Посредник подключений (Connection Broker)". В его задачи входит авторизовать пользователя и направить его на хост узла сеансов (RDSH) по правилу балансировки.

Схема подключения к RDS ферме

Далее пользователь начинает проходить авторизацию на узле сеансов (RDSH), это сервер на котором установлены все приложения для пользователя. Если пользователь заходит первый раз на данный хост, то ему создается его профиль, если он перемещаемый, то начинается его загрузка по сети. В любом случае пользовательский профиль, первый раз создается из профиля по умолчанию (Дефолтового) к которому потом добавляются дополнительные настройки текущего пользователя. Данный профиль лежит в папке C:\Users\Default. Проблемы с его повреждением, давали в Windows 7, ошибку "Служба профилей пользователей препятствует входу в систему"

Профиль пользователя по умолчанию - это профиль шаблона для всех созданных пользователей. Всякий раз, когда вы создаете новый профиль пользователя, профиль создается на основе профиля пользователя по умолчанию. Думаю, вы освежили в памяти алгоритм работы RDS фермы. Из всего этого вытекает термин:

Временный профиль - это профиль, который назначается пользователю по ряду причин связанных с настройкой и работой операционной системой, сетью и многими другими факторами, наличие временного профиля говорит, о том, что пользователь не видит своего привычного окружение, настроек, данных и не может полноценно работать.

Профиль по умолчанию в Windows

Анализ логов при временном профиле

Симптомы ошибки:

  • Создается дополнительная папка профиля пользователя. К имени этой папки добавляется имя домена NetBIOS или трехзначный суффикс. Например, имя папки - Username.ROOT или Username.000.
  • Если у пользователя есть перемещаемый профиль, некоторые приложения, использующие пути «Папки оболочки» в реестре, перестают отвечать. Кроме того, когда пользователь выходит из компьютера, изменения в данных приложения, которые хранятся в профиле пользователя, не перемещаются в базу данных домена.

Когда вы откроете журналы событий, то вы можете обнаружить вот такие события в журнале "Приложение":

Предупреждение с кодом ID 1509: Windows не удается скопировать файл \\?\UNC\root.pyatilistnik.org\root\Boy\WINDOWS\win.ini в расположение \\?\C:\Users\Boy\WINDOWS\win.ini. Возможная причина - сетевые проблемы или недостаточные права безопасности. ПОДРОБНО - Отказано в доступе.

Предупреждение с кодом ID 1509

Предупреждение с кодом ID 1534: Слишком много ошибок при копировании профиля. Для получения более подробных сведений просмотрите предыдущие события. Windows не будет записывать в журнал никаких дополнительных ошибок копирования для этого процесса копирования.

Предупреждение с кодом ID 1534

Ошибка ID 1533, источник User Profile Service: Не удается удалить папку профилей C:\Users\Boy. Возможная причина - файлы этой папки используются другой программой. ПОДРОБНО - Папка не пуста.

Ошибка ID 1533

Ошибка с кодом ID 1511, источник User Profile Service: Windows не удалось найти локальный профиль пользователя, вход в систему выполнен с временным профилем. Любые изменения профиля будут потеряны при выходе.

Ошибка с кодом ID 1511

Более детально, что происходит на терминальном сервере в момент входа пользователя, можно проследить в журнале Microsoft-Windows-User Profile Service/Operational. При входе на терминальный стол формируется событие с кодом ID 1: Получено уведомление о входе пользователя для сеанса 151. Тут сразу можно увидеть нужный ID пользователя, чтобы потом найти его процессы и PID.

событие с кодом ID 1

Далее идет событие с кодом ID 64: Отношение к основному компьютеру не было проверено для этого компьютера и этого пользователя. Причина: running as a terminal server farm.

событие с кодом ID 64
Далее начинается попытка синхронизации перемещаемого профиля в событии ID 6.

событии ID 6

Видим. что синхронизация завершена не полностью: Событие с кодом ID 7: Завершена синхронизация профиля \\root.pyatilistnik.org\root\Boy с C:\Users\Boy
Результат: Запрос ReadProcessMemory или WriteProcessMemory был выполнен только частично.

Событие с кодом ID 7

Видим, что ему создался временный TEMP профиль, а так же видно его SID:

Событие с кодом ID 5: Файл реестра C:\Users\TEMP.003\ntuser.dat загружен в HKU\S-1-5-21-551888299-3078463796-3314076131-11105.

Событие с кодом ID 5

ну и событие ID 67 нам говорит, что мы вошли с временным профилем: Тип входа: RDS Расположение локального профиля: C:\Users\TEMP.003 Тип профиля: Temporary

Почему невозможно загрузить профиль пользователя

И так, какие причины вызывают сообщение, что службе "Служба профилей пользователя" не удалось войти в систему:

  • Поврежден профиль пользователя, локальный или перемещаемый
  • Глюк антивируса, видел случаи, что когда пользователь пытался попасть на удаленный рабочий стол, в момент авторизации антивирус, производил сканирование, которое вызывало ошибку с загрузкой профиля юзера.
  • Поврежден реестр Windows
  • Проблемы с правами на профиль пользователя по умолчанию

Ниже я опишу подробно, что нужно делать в каждом из описанных выше пунктов.

Небольшое отступление, описанные тут методы, помогут решить проблему, когда пользователю приходится производить вход в систему с временным профилем

Решаем ошибку с загрузкой профиля пользователя

  • Перезагрузка - как бы это банально не звучало, но в большинстве случаев помогает перезагрузка, в случае с обычным компьютером это проблем не вызывает, а вот уже с терминальным сервером, это сложнее, так как на нем работают многие пользователи. Что могу посоветовать, если есть возможность, то закройте новые подключения к нему, а вечером его перезагрузите, а пользователь по возможности пусть поработает за другим хостом RDSH.
  • Если перезагрузка не помогла и юзер при входе видит, что невозможно загрузить профиль пользователя, то пробуем при наличии антивируса отключить его на время и проверить. Если это эффекта не дало, то вам необходимо удалить темповый профиль пользователя и произвести оптимизацию реестра.

Очень часто в виду ошибок реестра Windows, операционная система может создать временный профиль пользователю или создать его с ошибкой, в результате чего, он не сможет залогиниться. Та же проблема может быть и с перемещаемыми профилями. У меня в организации, рабочий стол и папка мои документа у пользователя перемещаются и хранятся на сервере, и я очень часто вижу такую проблему. Я из нее выхожу таким методом.

Захожу на сервер под собой, для этого я подключаюсь к нужной мне ноде RDS фермы. После чего я переименовываю папку с профилем пользователя, добавляю префикс _old. Все данные пользователя в ней сохраняются. После чего пользователь пытается залогиниться на терминальную ферму, и если у него все хорошо, и его профиль успешно создается и загружается, я ему копирую его данные.

почему невозможно загрузить профиль пользователя

Остается один процент, когда простое переименовывание не помогает и службе профилей пользователя все так же не удалось войти в систему и невозможно загрузить профиль пользователя. В таких случаях на самом сервере может сохраниться временный кэш или может быть повреждена учетная запись по умолчанию (C:\Users\Default).

  • Первым делом проверьте наличие в папке пользователей (Users) наличие папок с названием TEMP и, что-то там, по сути это временный профиль, из приведенных выше событий журнала Windows вы можете понять кто в нем работает или же методом из реестра Windows, который я опишу ниже. Посмотрите у него дату создания, в большинстве случаев она будет совпадать с той, когда у пользователя начались проблемы. Теперь просто удаляем эту папку (обязательно проверьте нет ли там нужных файлов, актуально для перемещаемых папок в профиле). Если возникнут проблемы, с удалением и она напишет, что удалить ее не получается, то воспользуйтесь инструкцией по удалению папок и файлов в заблокированном виде. Обратите там на утилиту Unlocker или посмотрите кто блокирует данные файлы, если пользователь с ними работает то просим его выйти из системы , сохранить при необходимости файлы и попытаться удалить папку временного профиля, но это еще не все нужно вычистить ветку реестра ссылающуюся на данный профиль.

Закэшированный временный профиль

Еще раз напоминаю зайти и проверить наличие важных данных в профиле, в моем случае был только ярлык с рабочего стола

Проблема с временным профилем

После этого, можете еще проверить реестр на ошибки и исправить их, чтобы не осталось в нем старых хвостов от временных профилей, да и просто убрать старый хлам, например у меня на данном хосте было свыше 1000 ошибок.

Чистка реестра при временном профиле

  • Если это не помогло, то вы можете еще попробовать заменить дефолтовый профиль, который располагается в папке C:\Users\Default. Для этого возьмите эту папку с рабочего сервера, той же редакции операционной системы и замените его на сбойный, это должно окончательно решить проблему с невозможностью загрузить профиль пользователя. Если вы знаете еще какие либо методы, то просьба поделиться ими в комментариях.
  • По мимо оптимизации реестра, вам еще необходимо удалить битую ветку, которая и направляет доменного пользователя Active Directory на временный профиль. Откройте редактор реестра и перейдите в раздел:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList

Тут вы обнаружите список всех профилей имеющихся в системе, но они будут иметь в названии SID номер (Как узнать SID пользователя я уже рассказывал), но если их не много, то вы можете просто пробежаться по каждой из папок и посмотреть в ключе CentralProfile его значение, там вы увидите в случае с перемещаемыми профилями, кому он принадлежит.

Временный профиль в реестре

далее тут два варианта, первый это полное удаление папки пользователя в данном разделе реестра, так советуют и в Microsoft

Перед удалением можете сделать выгрузку его для резервной копии или же можете просто его переименовать как вариант .если боитесь удалять

Удаление ключа реестра при временном профиле

или вариант, что вы можете попробовать в ключе ProfileImagePath прописать правильный путь до профиля пользователя.

Смена пути из временного профиля в реестре ProfileImagePath

Лучше удалять, по свое практике. Правильно делаем выход пользователя с данного сервера. После чего еще раз проверяем, что папка с его временным профилем удалена, если вы ее до этого не удаляли в виду того, что она заблокирована, то сейчас можно сделать. Теперь когда сотрудник зайдет на удаленный рабочий стол, у него будет создан новый профиль и его данные будут перемещены с вашего сервера, если у вас перемещаемые профили. Когда у вас сервер будет в режиме обслуживания пробегитесь по данной ветке реестра и посмотрите все ключи реестра ссылающиеся на временные профили и удалите их, чтобы люди не получали временные профили.

В некоторых случаях, все же приходится перезагрузить терминальный стол после удаления веток реестра

Еще на одном из блогов я нашел совет автора, который рассматривал удаление из ветки реестра

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileGUID\SID пользователя, который мы находили выше

Еще бывают ситуации, что в реестре создается дублирующая ветка с именем SID пользователя, но на конце у нее добавляется слово bak, означающее бэкап. В таком случае, можно удалить ветку реестра без слова bak на конце, а вот ветку реестра с bak переименовать, удалим на конце bak, тем самым восстановив нормальную ветку реестра для нужного пользователя.

Временный профиль-4

Проверка файловой системы на повреждения

Очень часто в операционных системах Windows, ошибки реестра и временные профили могут быть следствием того, что повреждены некоторые системные файлы, чтобы их проверить и исправить вам нужно открыть командную строку от имени администратора и ввести три команды по очереди, после каждой дождаться результата.

sfc /scannow после Dism /online /cleanup-image /restorehealth и затем ChkDsk /r 

Как видите в моем случае, утилиты смогли найти повреждения и восстановить их.

Восстановление системных файлов Windows

Еще одной из причин была ситуация в Windows Server 2008 R2 или Windows 7: Эта проблема возникает из-за состязания между службой профилей пользователей (Profsvc.dll) и службой поиска Windows (SearchIndexer.exe). Служба профилей пользователей размещается в экземпляре Svchost.exe. Когда применяется параметр групповой политики, служба профилей пользователей выполняет поиск в папке профиля пользователя, чтобы рекурсивно удалить содержимое. Однако служба поиска Windows может попытаться проверить содержимое папки одновременно. Таким образом возникает ситуация взаимоблокировки, и вы сталкиваетесь с проблемами, описанными в разделе «Проблема». Компания Microsoft выпускала обновление, которое создает две записи реестра в следующем разделе реестра:

DeleteRetryWait 1000 Интервал (измеряется в миллисекундах) между попытками удаления папки профиля пользователя в случае неудачного удаления
DeleteRetryAttempts 15 Максимальное количество попыток удаления

На форуме Microsoft я наткнулся на одно обсуждение, где для ремонта профиля предлагалось использовать утилиту Reprofier.

Вот так выглядит интерфейс Reprofier, очень удобно для локальных профилей, которые подвергнулись повреждению.

Reprofier
Дополнительный анализ поврежденных. временных профилей

Еще я вам советую включить отладочный журнал, для поиска проблем с временными профилями на терминальной ферме. Для этого откройте просмотр событий и перейдите в журнал "Microsoft-Windows-User Profile Service/".  Нажмите "Вид - Отобразить аналитический и отладочный журналы".

Отобразить аналитический и отладочный журналы
У вас отобразиться новый скрытый журнал "Diagnostiс" тут вы можете отследить дополнительные события, которые смогут вам помочь, например события с кодом ID 1001, 1002, 1003, 1004, 1005 и 1006.

Временный профиль-6
Создание и декодирование трассировки

В случае, если другие шаги вам не сильно помогут; это будет последний шаг, который вы можете сделать. Он включает в себя использование Windows PowerShell для создания и декодирования трассировки.Сначала войдите на компьютер, используя учетную запись администратора.

Затем вам нужно открыть окно PowerShell с повышенными правами перейти в расположение ранее созданной папки, пусть это будет C:\Temp. Введите следующие команды в окне командной строки:

logman create trace -n RUP -o \RUP.etl -ets
logman update RUP -p {eb7428f5-ab1f-4322-a4cc-1f1a9b2c5e98} 0x7FFFFFFF 0x7 -ets

Теперь на компьютер должен зайти пользователь испытывающий проблемы. Убедитесь, что вы НЕ выходите из этой учетной записи. Воспроизведите ту же проблему. После этого снова войдите в систему как локальный администратор. Введите следующие команды в окне командной строки, чтобы сохранить захваченный журнал в файл формата ETL,

logman stop -n RUP -ets

Теперь, наконец, чтобы сделать его читабельным, введите следующую команду:

Tracerpt \RUP.etl

Здесь путь будет указывать расположение читаемого файла.Теперь вы можете открыть файл журнала Summary.txt или Dumpfile.xml, чтобы читать журналы, используя Блокнот или Microsoft Excel соответственно. На этом у меня все, я постарался развернуто описать решение с временными профилями на терминальной ферме и локальных компьютерах. С вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.

Дополнительная литература:

  • https://www.itsmdaily.com/easy-how-to-fix-temporary-profile-in-microsoft-windows-and-microsoft-server/
  • https://social.technet.microsoft.com/Forums/lync/en-US/2309e2e5-ca3f-499f-856c-395ffa23b8ce/remote-desktop-user-getting-locked-into-a-temp-profile-each-time-she-logs-in?forum=winserverTS
  • https://support.microsoft.com/ru-ru/help/2661663/stale-user-profile-folders-are-not-deleted-completely-in-windows-7-or
  • http://www.eventid.net/display-eventid-1533-source-User%20Profile%20Service-eventno-10628-phase-1.htm
  • https://www.c-sharpcorner.com/UploadFile/shyjumohan/fix-corrupt-user-profile-temp-profile-in-windows-server-20/
  • https://social.technet.microsoft.com/Forums/windows/en-US/e492a389-0f70-420b-9d1e-2a286beac698/event-id-1542-user-profile-service-and-missing-classes-root-key?forum=w7itproinstall
  • https://www.thewindowsclub.com/user-profile-service-event-ids

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *