Невозможно загрузить профиль пользователя на терминальной ферме
- Описание проблемы с временным профиле
- Как происходит формирование профиля на терминальном сервере
- Анализ логов при временном профиле
- Почему невозможно загрузить профиль пользователя
- Решаем ошибку с загрузкой профиля пользователя
- Проверка файловой системы на повреждения
- Дополнительный анализ поврежденных. временных профилей
- Создание и декодирование трассировки
- Дополнительная литература:
Добрый день! Уважаемые читатели 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) по правилу балансировки.
Далее пользователь начинает проходить авторизацию на узле сеансов (RDSH), это сервер на котором установлены все приложения для пользователя. Если пользователь заходит первый раз на данный хост, то ему создается его профиль, если он перемещаемый, то начинается его загрузка по сети. В любом случае пользовательский профиль, первый раз создается из профиля по умолчанию (Дефолтового) к которому потом добавляются дополнительные настройки текущего пользователя. Данный профиль лежит в папке C:\Users\Default. Проблемы с его повреждением, давали в Windows 7, ошибку "Служба профилей пользователей препятствует входу в систему"
Профиль пользователя по умолчанию - это профиль шаблона для всех созданных пользователей. Всякий раз, когда вы создаете новый профиль пользователя, профиль создается на основе профиля пользователя по умолчанию. Думаю, вы освежили в памяти алгоритм работы RDS фермы. Из всего этого вытекает термин:
Временный профиль - это профиль, который назначается пользователю по ряду причин связанных с настройкой и работой операционной системой, сетью и многими другими факторами, наличие временного профиля говорит, о том, что пользователь не видит своего привычного окружение, настроек, данных и не может полноценно работать.
Анализ логов при временном профиле
Симптомы ошибки:
- Создается дополнительная папка профиля пользователя. К имени этой папки добавляется имя домена NetBIOS или трехзначный суффикс. Например, имя папки - Username.ROOT или Username.000.
- Если у пользователя есть перемещаемый профиль, некоторые приложения, использующие пути «Папки оболочки» в реестре, перестают отвечать. Кроме того, когда пользователь выходит из компьютера, изменения в данных приложения, которые хранятся в профиле пользователя, не перемещаются в базу данных домена.
Когда вы откроете журналы событий, то вы можете обнаружить вот такие события в журнале "Приложение":
Более детально, что происходит на терминальном сервере в момент входа пользователя, можно проследить в журнале Microsoft-Windows-User Profile Service/Operational. При входе на терминальный стол формируется событие с кодом ID 1: Получено уведомление о входе пользователя для сеанса 151. Тут сразу можно увидеть нужный ID пользователя, чтобы потом найти его процессы и PID.
Далее начинается попытка синхронизации перемещаемого профиля в событии ID 6.
Результат: Запрос ReadProcessMemory или WriteProcessMemory был выполнен только частично.
Видим, что ему создался временный TEMP профиль, а так же видно его SID:
Почему невозможно загрузить профиль пользователя
И так, какие причины вызывают сообщение, что службе "Служба профилей пользователя" не удалось войти в систему:
- Поврежден профиль пользователя, локальный или перемещаемый
- Глюк антивируса, видел случаи, что когда пользователь пытался попасть на удаленный рабочий стол, в момент авторизации антивирус, производил сканирование, которое вызывало ошибку с загрузкой профиля юзера.
- Поврежден реестр Windows
- Проблемы с правами на профиль пользователя по умолчанию
Ниже я опишу подробно, что нужно делать в каждом из описанных выше пунктов.
Решаем ошибку с загрузкой профиля пользователя
- Перезагрузка - как бы это банально не звучало, но в большинстве случаев помогает перезагрузка, в случае с обычным компьютером это проблем не вызывает, а вот уже с терминальным сервером, это сложнее, так как на нем работают многие пользователи. Что могу посоветовать, если есть возможность, то закройте новые подключения к нему, а вечером его перезагрузите, а пользователь по возможности пусть поработает за другим хостом RDSH.
- Если перезагрузка не помогла и юзер при входе видит, что невозможно загрузить профиль пользователя, то пробуем при наличии антивируса отключить его на время и проверить. Если это эффекта не дало, то вам необходимо удалить темповый профиль пользователя и произвести оптимизацию реестра.
Очень часто в виду ошибок реестра Windows, операционная система может создать временный профиль пользователю или создать его с ошибкой, в результате чего, он не сможет залогиниться. Та же проблема может быть и с перемещаемыми профилями. У меня в организации, рабочий стол и папка мои документа у пользователя перемещаются и хранятся на сервере, и я очень часто вижу такую проблему. Я из нее выхожу таким методом.
Захожу на сервер под собой, для этого я подключаюсь к нужной мне ноде RDS фермы. После чего я переименовываю папку с профилем пользователя, добавляю префикс _old. Все данные пользователя в ней сохраняются. После чего пользователь пытается залогиниться на терминальную ферму, и если у него все хорошо, и его профиль успешно создается и загружается, я ему копирую его данные.
Остается один процент, когда простое переименовывание не помогает и службе профилей пользователя все так же не удалось войти в систему и невозможно загрузить профиль пользователя. В таких случаях на самом сервере может сохраниться временный кэш или может быть повреждена учетная запись по умолчанию (C:\Users\Default).
- Первым делом проверьте наличие в папке пользователей (Users) наличие папок с названием TEMP и, что-то там, по сути это временный профиль, из приведенных выше событий журнала Windows вы можете понять кто в нем работает или же методом из реестра Windows, который я опишу ниже. Посмотрите у него дату создания, в большинстве случаев она будет совпадать с той, когда у пользователя начались проблемы. Теперь просто удаляем эту папку (обязательно проверьте нет ли там нужных файлов, актуально для перемещаемых папок в профиле). Если возникнут проблемы, с удалением и она напишет, что удалить ее не получается, то воспользуйтесь инструкцией по удалению папок и файлов в заблокированном виде. Обратите там на утилиту Unlocker или посмотрите кто блокирует данные файлы, если пользователь с ними работает то просим его выйти из системы , сохранить при необходимости файлы и попытаться удалить папку временного профиля, но это еще не все нужно вычистить ветку реестра ссылающуюся на данный профиль.
После этого, можете еще проверить реестр на ошибки и исправить их, чтобы не осталось в нем старых хвостов от временных профилей, да и просто убрать старый хлам, например у меня на данном хосте было свыше 1000 ошибок.
- Если это не помогло, то вы можете еще попробовать заменить дефолтовый профиль, который располагается в папке C:\Users\Default. Для этого возьмите эту папку с рабочего сервера, той же редакции операционной системы и замените его на сбойный, это должно окончательно решить проблему с невозможностью загрузить профиль пользователя. Если вы знаете еще какие либо методы, то просьба поделиться ими в комментариях.
- По мимо оптимизации реестра, вам еще необходимо удалить битую ветку, которая и направляет доменного пользователя Active Directory на временный профиль. Откройте редактор реестра и перейдите в раздел:
Тут вы обнаружите список всех профилей имеющихся в системе, но они будут иметь в названии SID номер (Как узнать SID пользователя я уже рассказывал), но если их не много, то вы можете просто пробежаться по каждой из папок и посмотреть в ключе CentralProfile его значение, там вы увидите в случае с перемещаемыми профилями, кому он принадлежит.
далее тут два варианта, первый это полное удаление папки пользователя в данном разделе реестра, так советуют и в Microsoft
или вариант, что вы можете попробовать в ключе ProfileImagePath прописать правильный путь до профиля пользователя.
Лучше удалять, по свое практике. Правильно делаем выход пользователя с данного сервера. После чего еще раз проверяем, что папка с его временным профилем удалена, если вы ее до этого не удаляли в виду того, что она заблокирована, то сейчас можно сделать. Теперь когда сотрудник зайдет на удаленный рабочий стол, у него будет создан новый профиль и его данные будут перемещены с вашего сервера, если у вас перемещаемые профили. Когда у вас сервер будет в режиме обслуживания пробегитесь по данной ветке реестра и посмотрите все ключи реестра ссылающиеся на временные профили и удалите их, чтобы люди не получали временные профили.
Еще на одном из блогов я нашел совет автора, который рассматривал удаление из ветки реестра
Еще бывают ситуации, что в реестре создается дублирующая ветка с именем SID пользователя, но на конце у нее добавляется слово bak, означающее бэкап. В таком случае, можно удалить ветку реестра без слова bak на конце, а вот ветку реестра с bak переименовать, удалим на конце bak, тем самым восстановив нормальную ветку реестра для нужного пользователя.
Проверка файловой системы на повреждения
Очень часто в операционных системах Windows, ошибки реестра и временные профили могут быть следствием того, что повреждены некоторые системные файлы, чтобы их проверить и исправить вам нужно открыть командную строку от имени администратора и ввести три команды по очереди, после каждой дождаться результата.
sfc /scannow после Dism /online /cleanup-image /restorehealth и затем ChkDsk /r
Как видите в моем случае, утилиты смогли найти повреждения и восстановить их.
Еще одной из причин была ситуация в Windows Server 2008 R2 или Windows 7: Эта проблема возникает из-за состязания между службой профилей пользователей (Profsvc.dll) и службой поиска Windows (SearchIndexer.exe). Служба профилей пользователей размещается в экземпляре Svchost.exe. Когда применяется параметр групповой политики, служба профилей пользователей выполняет поиск в папке профиля пользователя, чтобы рекурсивно удалить содержимое. Однако служба поиска Windows может попытаться проверить содержимое папки одновременно. Таким образом возникает ситуация взаимоблокировки, и вы сталкиваетесь с проблемами, описанными в разделе «Проблема». Компания Microsoft выпускала обновление, которое создает две записи реестра в следующем разделе реестра:
DeleteRetryAttempts 15 Максимальное количество попыток удаления
На форуме Microsoft я наткнулся на одно обсуждение, где для ремонта профиля предлагалось использовать утилиту Reprofier.
Вот так выглядит интерфейс Reprofier, очень удобно для локальных профилей, которые подвергнулись повреждению.
Дополнительный анализ поврежденных. временных профилей
Еще я вам советую включить отладочный журнал, для поиска проблем с временными профилями на терминальной ферме. Для этого откройте просмотр событий и перейдите в журнал "Microsoft-Windows-User Profile Service/". Нажмите "Вид - Отобразить аналитический и отладочный журналы".
У вас отобразиться новый скрытый журнал "Diagnostiс" тут вы можете отследить дополнительные события, которые смогут вам помочь, например события с кодом ID 1001, 1002, 1003, 1004, 1005 и 1006.
Создание и декодирование трассировки
В случае, если другие шаги вам не сильно помогут; это будет последний шаг, который вы можете сделать. Он включает в себя использование Windows PowerShell для создания и декодирования трассировки.Сначала войдите на компьютер, используя учетную запись администратора.
Затем вам нужно открыть окно PowerShell с повышенными правами перейти в расположение ранее созданной папки, пусть это будет C:\Temp. Введите следующие команды в окне командной строки:
logman update RUP -p {eb7428f5-ab1f-4322-a4cc-1f1a9b2c5e98} 0x7FFFFFFF 0x7 -ets
Теперь на компьютер должен зайти пользователь испытывающий проблемы. Убедитесь, что вы НЕ выходите из этой учетной записи. Воспроизведите ту же проблему. После этого снова войдите в систему как локальный администратор. Введите следующие команды в окне командной строки, чтобы сохранить захваченный журнал в файл формата 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
Вижу не у одного меня есть периодически появляющиеся временные профили на терминалах
Если тема активна, просьба помочь или направить в нужное русло.
После выхода пользователей, профиль .vhdx (лежащие на отдельном сервере), висит не доступный, как будто продолжает кем то использоваться, не открыть не удалить. Из за это при повторном подключении, пользователю создаётся временный профиль локально
Я встречал еще один баг, когда у пользователя «то-ли» подвисала сессия в sql базе, то-ли глюк был на самой ферме, проявлялся он так, пользователь заходит на первичный терминал, с рабочим столом, откуда подключается к другому терминалу, уже 1с, и вот при входе на 1с выдавало сообщение, что невозможно подключиться к серверу, поскольку невозможно подгрузить профиль.
Детект проблемы был в том, что из двух серверов, ставился запрет на 1, и система упорно пыталась подключить пользователя к запрещенному терминалу. При этом в брокере на данных серверах никак не отображалось, что у пользователя уже есть сессия к которой подмаплен vxd профиль. По сути получалось, что пользователя кидало на 1 сервера, а профиль в это время был подключен к другой сессии, которую было не видно. Самым простым способом был выход с первого терминала (там другой vxd профиль), сброс сессии, после чего второй терминал начинал прогружаться корректно.
Могу я просто сказать, какое утешение обнаружить в Интернете кого-то, кто действительно знает, о чем говорит. Вы действительно знаете, как выявить проблему и сделать ее важной.
Привет! Временный профиль на терминальном сервере создаётся ещё и по причине того что могли закончиться лицензии RDS если настроено PerUser. Проверьте RDSM на хосте на предмет ошибок. Или сразу на RDLS посмотрите на количество существующих и выданных лицензий.