Как исправить проблему «The User Profile Service failed the logon. User profile cannot be loaded. Служба профилей пользователей препятствует входу в систему Удалять кэшированные копии перемещаемых профилей


Ситауция такая: есть у меня Windows 7 Professional, лицензионный. Купил вот в ожидании DXHR, чтобы по-чистому поиграть нормально в любимый с детства киберпанк. А пока игра не вышла он используется для отладки и переписывания приложений, которые чисто приложения, которые сам пишу, которые никуда дальше (условно говоря) обычных mutex"ов, нитей, процессов, файлов и сокетов не лезут, во время тестирования я активно читаю документацию в интернет. Но сам я - Linux-оид, и поэтому захожу в W7 редко.

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

Вчера, после очередного обновления, обнаружил, что не могу создавать файлы у себя в Documents. Система стала радостно сообщать, что мол Permission denied, вводи пароль администратора… Ну, ладно, думаю, может, сам чего случайно испортил, где-нибудь галочку не ту кликнул, бывает. В профиле пользователя у меня ничего нет ценного, поэтому я его, не задумываясь особо, снёс (естественно, через панель управления и удаление пользователя, а то мало ли чего), чтобы потом не мучаться.

Затем, создал я нового пользователя… И началось вот это странное поведение: когда я кликаю на иконку свежесозданного standart user на Logon-экране, система пишет: The User Profile Service service failed the logon. User profile cannot be loaded.

Ну… Подумал я, бывает, Windows же. Поставил ему -1 в карму мысленно, и пошёл искать решение. Вроде, нашёл: support.microsoft.com/kb/947215 - но вот проблема: ничего, из того, что там описано не помогает. Но там написано про некие Group Policy settings… Хм, думаю, однако… Я туда точно не лез, и ничего не менял, и вообще на сайте Microsoft написано, что такого в Windows 7 Professional нету, а есть оно только в Enterprise и Ultimate версиях.

И совершенно теперь не понятно, в чём может быть проблема? Я, как Linux-оид, вообще даже представить такого поведения системы не могу: когда учётная запись успешно создаётся, а система не может никак ей воспользоваться - и не в состоянии понять, в каком направлении копать, то есть, у меня полный frustration, отсутсвие ментальных моделей происходящего, и полное непонимание того, по каким ключевым словам искать решение проблемы. Я даже в Реестре не могу найти ничего, связанного со вновь создаваемым пользователем. Его даже в списке SID"ов нет - это для меня вообще абсолютно загадочно: как так можно пользователя сотворить, а идентификатор ему не присвоить?.. Прямо мистика.

Поэтому все мои надежды на Хабрасообщество (в других сообществах поискал, там просто повотряют в разных вариантах рецепт от Microsoft). Что же делать-то, куда смотреть, что искать? Не под администратором же пускать свои глюкавые программы и по интернетам шастать.

P.S. Или, проще будет снести этот Windows (жаль денег, конечно, но… просто… такой облом не детский) и надеяться на то, что когда DXHR выйдет, то он и под WiNE заведётся?.. Работают же там 2-е части Starcraft и Portal.

У профиля два назначения: управление использованием пароля и ограничением на кол-во используемых ресурсов сессии. Проверка использования пароля всегда включена, проверка использования ресурсов доступна только при включенном параметре RESOURCE_LIMIT=TRUE (по-умолчанию выключено). Профили используются по умолчанию, но профили по умолчанию (применяются ко всем пользователям, в том числе и к SYS и SYSTEM) проверяют очень мало.

Profile password limits are always enforced; profile resource limits

are enforced only if the instance parameter RESOURCE_LIMIT is TRUE.

К паролю могут быть применены следующие ограничения

  • FAILED_LOGIN_ATTEMPTS – устанавливает число последовательно неправильных вводов пароля перед блокировкой аккаунта. Если вводится корректный пароль до блокировки, счётчик обнуляется
  • PASSWORD_LOCK_TIME – устанавливает количество (в днях) до блокировки аккаунта после FAILED_LOGIN_ATTEMPTS
  • PASSWORD_LIFE_TIME – количество (в днях) до окончания жизни пароля. После этого пароль ещё может быть активным какое-то время в зависимости от PASSWORD_GRACE_TIME
  • PASSWORD_GRACE_TIME – количество (в днях) после первой успешной попытки подключения после окончания жизни пароля пока будет выводиться предложение сменить пароль. Старый пароль действителен в этом время
  • PASSWORD_REUSE_TIME – Количество дней перед тем как пароль может быть использован заново (значение пароля)
  • PASSWORD_REUSE_MAX – устанавливает сколько раз может быть использован один и тот же пароль
  • PASSWORD_VERIFY_FUNCTION – имя функции для выполнения при смене пароля. Целью предполагается проверка нового пароля на необходимый уровень безопасности, но вы можете использовать для любых целей.

Ограничение ресурсов

Ограничениями накладывами на использование ресурсов сервера (kernel limits) являются

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

CPU_PER_SESSION – время процессора (в сентисекундах) которое серверный процесс сессии может использовать до принудительного завершения

CPU_PER_CALL — время процессора (в сентисекундах) которое серверный процесс может использовать для выполнения одной SQL команды до принудительной остановки выполнения запроса

LOGICAL_READS_PER_SESSION – количество блоков которое может считать сессия (независимо из буффера или с диска) перед принудительным отключением сессии

LOGICAL_READS_PER_CALL – количество блоков которое может считать запрос (независимо из буффера или с диска) перед принудительной остановкой выполнения запроса

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

CONNECT_TIME – в минутах, масимальная длительность сессии

IDLE_TIME – в минутах, длительность бездействия по достижении которой сессия принудительно отключается

COMPOSITE_LIMIT – взвешенная сумма других атрибутов. Не рассматриваем в этом курсе

Все ограничения по использования ресурсов не будут выполняться до установки параметра экземпляра RESOURCE_LIMIT. По умолчанию значение FALSE. Включить можно выполнив запрос

ALTER SYSTEM SET RESOURCE_LIMIT=TRUE;

Когда сессия отключается из-за достижения лимита, если была неподтвержденная транзакция – она отменяется. Если останавливается выполнение запроса – то изменения сделанные этим запросом отменяются, но все выполненные команды до этого остаются в силе и неподтверждёнными.

Profiles can be used to limit resource usage, but a much more

sophisticated tool is the Resource Manager

Создание и назначение профилей

Управлять профилями можно через Database Control или SQL *Plus. Для просмотра текущих профилей пользователей выполните запрос

select username,profile from dba_users;

По умолчанию все аккаунты (за исключением двух внутренних аккаунтов DBSNMP и WKSYS) будут использовать профиль DEFAULT. Запрос для просмотра профиля

select * from dba_profiles where profile=’DEFAULT’;

Профиль DEFAULT не имеет ограничений на ресурсы, но существуют несколько ограничения на пароли

Эти ограничения не слишком сильные: пароль может вводится неверно 10 раз перед блокировкой аккаунта на один день, и пароль истекает через полгода с грейс периодом в неделю. Простейший способ применить более строгие ограничения к паролям это выполнить скрипт поставляемый с Oracle $ORACLE_HOME/rdbms/admin/utlpwdmg.sql. Этот скрипт создаст функции VERIFY_FUNCTION и VERIFY_FUNCTION_11G и затем выполните запрос

ALTER PROFILE DEFAULT LIMIT

PASSWORD_LIFE_TIME 180

PASSWORD_GRACE_TIME 7

PASSWORD_REUSE_TIME UNLIMITED

PASSWORD_REUSE_MAX UNLIMITED

FAILED_LOGIN_ATTEMPTS 10

PASSWORD_LOCK_TIME 1

PASSWORD_VERIFY_FUNCTION verify_function_11G;

Эта команда изменит профиль DEFAULT. Все пользователи с профилем DEFAULT (все пользователи по умолчанию) сразу подхватят новые значения. Единственным изменение будет использование функции verify_function_11G. Эта функция будет проверять пароль на соответствие определённым критериям, а именно

  • Новый пароль должен быть длинной не менее 8 символов
  • Пароль не должен совпадать с именем пользователя
  • Часто использумые простые пароли (к примеру oracle) будут отклонены
  • Новый пароль должен содержать минимум одну заглавную букву и одну цифру
  • Пароль должен отличаться минимум в три символа от предыдущего

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

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

alter profile default limit sessions_per_user 1;

Затем создать профиль dba_profile и назначить его пользователю system

create profile dba_profile limit sessions_per_user unlimited password_life_time 7 password_grace_time 1;

alter user system profile dba_profile;

И создать профиль для программистов

create profile programmers_profile limit sessions_per_user 2;

alter user jon profile programmers_profile;

alter user sue profile programmers_profile;

Для вступления ограничений по ресурсам в силу необходимо установить параметр экземпляра

alter system set resource_limit=true;

Если экземпляр использует SPFILE это изменение применится к файлу параметров и будет использоваться даже после перезапуска.

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

Так что теперь у вас есть проблема, если вы пишете библиотеку, которая будет использоваться как кодом старой школы, написанным с wchar_t , определённым как псевдоним для unsigned short , так и кодом новой школы, написанным с wchar_t как отдельным внутренним типом. Какой тип данных вам нужно использовать для строковых параметров?

Это перевод The sad history of Unicode printf-style format specifiers in Visual C++ .

Windows реализовала Unicode раньше, чем большинство других операционных систем. В результате решения Windows для многих проблем отличаются от решений, принятых теми, кто подождал, когда пыль осядет¹. Самым ярким примером этого является использование Windows UCS-2 в качестве кодировки Unicode. Тогда это была кодировка, рекомендованная консорциумом Unicode, потому что Unicode 1.0 поддерживал только 65"536 символов². Консорциум Unicode передумал пять лет спустя, но к тому времени было уже слишком поздно для Windows, которая уже выпустила Win32s, Windows NT 3.1, Windows NT 3.5, Windows NT 3.51 и Windows 95 - все из которых использовали UCS-2³.

Но сегодня мы поговорим о строках формата в стиле printf .

Это перевод If FlushInstructionCache doesn’t do anything, why do you have to call it, revisited .

Предполагается, что вы будете вызывать функцию FlushInstructionCache , когда вы генерируете или модифицируете исполняемый код в run-time - чтобы процессор при выполнении вашего сгенерированного/модифицированного кода читал бы написанные вами инструкции, а не старые инструкции, которые могут остаться в кеше команд процессора.

Ранее мы узнали, что . Это потому, что простого вызова функции было достаточно, чтобы очистить кэш команд.

Но в Windows NT функция FlushInstructionCache выполняет реальную работу, поскольку ей необходимо уведомить все остальные процессоры о необходимости очищать их кэши.

Однако если вы посмотрите на Windows 10, то вы обнаружите, что функция FlushInstructionCache выглядит как версия для Windows 95: она ничего не делает .

В чём тут дело?

Повреждение учетной записи пользователя является общей проблемой Windows. Проблема возникает, когда вводите пароль или пин-код на экране блокировки и при нажатии enter будет выводиться ошибка "служба профилей пользователей не удалось войти в систему. Невозможно загрузить профиль пользователя" в windows 10 или Служба профилей пользователей препятствует входу в систему в Windows 7. .

Решаем проблему "Служба профилей пользователей не удалось войти в систему" с помощью редактора реестра

Вариант 1. Исправить профиль учетной записи пользователя

Иногда ваша учетная запись может быть повреждена и это мешает вам получить доступ к файлам в windows 10. Зайдем в редактор реестра несколькими способами, через безопасный режим:

Шаг 1 . Нажмите сочетание клавиш "windows + R " для вызова команды "выполнить" и введите команду regedit для входа в реестр.

Шаг 2 . В открывшимся окне перейдите по пути:

Шаг 3 . В параметре у вас будет несколько ключей s-1-5 . Вам нужно будет выбрать самый длинный ключ с длинным массивом чисел и вашей учетной записью, на которой ошибка "Служба профилей пользователей не удалось войти в систему". Убедиться, что путь правильный нажмите на длинный ключ и с право в колонке должно быть имя , если не нашли, то листайте все длинные ключи пока не наткнетесь в правой колонке на с вашим сломанным профилем, в моем случае учетная запись .

Шаг 4 . Если вы неправильно переименовали папку профиля пользователя C:\User\сайт пострадавшей учетной записи, то откройте проводник по пути C:\User\сайт и нажмите на сломанном профиле правой кнопкой мыши, выберите переименовать и введите вручную правильное имя профиля (сайт). После переименовки заходим обратно в реестре в папку и смотрим, чтобы имя было написано, как на картинке (шаг 3) C:\User\сайт.

Смотрите два варианта шаг 6 и шаг 7 в зависимости у кого как

Шаг 5 . Теперь сделаем два варианта, если у нас один длинный ключ S-1-5-21-19949....-1001.bak (в конце расширение.bak) и со вторым без .bak т.е. просто S-1-5-21-19949....-1001. В зависимости у кого как выстроились профили два или один.

Шаг 6 . Есть только один ключ в конце с.bak (S-1-5-21-19949....-1001.bak).

  • А) Если у вас есть только один ключ в конце с .bak (S-1-5-21-19949....-1001.bak), нажмите на нем правой кнопкой мыши и нажмите переименовать. (смотрите рисунок ниже).

  • Б) Удалите само слово с точкой .bak , чтобы получились просто цифры . Следуйте дальше шагу 8. (смотрите рисунок ниже)

Шаг 7 . Если у вас есть два одинаковых ключа, один без.bak, второй с.bak. (S-1-5-21-19949....-1001 и S-1-5-21-19949....-1001.bak) .

  • А) В левой панели реестра, щелкните правой кнопкой мыши на ключе без .bak и допишите точка, две буквы .bk (см. рисунок ниже).

  • Б) Теперь нажмите правой клавишей мыши на ключ с .bak , выберите переименовать и удалите .bak с точкой. (см. рисунок ниже).

  • В) Теперь вернитесь и переименуйте первый ключ с .bk в .bak . Нажмите enter и следуйте дальше шагу 8.

Шаг 8 . Выделите ключ который переименовали без .bak и с право в столбце нажмите два раза, чтобы открыть настройки параметра , и присвойте значение 0. Если у вас нет такого параметра , то нажмите с право на пустом поле правой кнопкой мыши и создайте параметр DWORD (32-bit), переименуйте его в RefCount и задайте значение 0.

Шаг 9 . В правом поле выберите ключ без .bak и в параметре State задайте значение 0. Если нет такого параметра, то кликните на пустом поле с право и нажмите создать DWORD (32-bit), переименуйте его в State и задайте значение 0.

Шаг 10 . Перезапустите ваш комп и ошибка "служба профилей пользователей не удалось войти в систему" и "невозможно загрузить профиль пользователя" в windows 10 должна исчезнуть.

Вариант 2. Удалить и создать новый профиль пользователя для учетной записи

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

Шаг 1 . Если есть другая учетная запись администратора, на которой нет ошибки, выйдите из текущей учетной записи (например: сайт) и войдите в запись администратора.

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

  • А). Загрузитесь в безопасном режиме, включите встроенный Администратор, выйдите из системы и войдите в систему Administrator.
  • Б). Откройте окно командной строки при загрузке, включите встроенный администратор, перезагрузите компьютер и войдите в систему Administrator.

Шаг 2 . Сделайте резервную копию всего, что вы не хотите потерять в папке профиля C: \ Users \ (имя пользователя) (например: сайт) соответствующей учетной записи пользователя в другое место. Когда закончите, удалите папку C: \ Users \ (имя пользователя).

Шаг 3 . Нажмите кнопки windows + R, чтобы открыть диалоговое окно «Выполнить», введите regedit и нажмите кнопку OK.

Шаг 4 . В редакторе реестра перейдите к указанному ниже расположению.

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

Шаг 5 . На левой панели в списке ProfileList нажмите на длинный ключ на котором ошибка учетной записи. Справа в виден профиль.

Шаг 6 . Удалите профили с ошибкой с.bak и без.bak. К примеру (S-1-5-21-19949....-1001 и S-1-5-21-19949....-1001.bak )-удалить.

Шаг 7 . Закройте редактор реестра и перезагрузите компьютер, после чего он автоматически воссоздаст нового пользователя.

Решим проблему "Невозможно загрузить профиль пользователя" простым способом

Способ 1 . Данный способ работает не у всех, но многим он помог. Постарайтесь скопировать свои документы в папке (C:\Users\) в другое место, чтобы создать резервную копию на всякий случай. Обычно проблема возникает из-за повреждения файла "NTUSER.DAT", расположенного в папке "C:\Users\Default". Чтобы решить эту проблему вам нужно заменить файл "NTUSER.DAT" с другого профиля. .

  1. Зайдите в систему в безопасном режиме с учетной записью профиля который работает.
  2. Найдите файл (C:\Users\Default) "NTUSER.DAT" и переименуйте расширение.DAT на.OLD. Должно быть (NTUSER.OLD).
  3. Найдите файл "NTUSER.DAT" в рабочем профиле таких как "Гость","Общие". Пример (C:\Users\Guest\NTUSER.DAT).
  4. Скопируйте его и вставьте в папку по умолчанию C:\Users\Default.
  5. Перезагрузить компьютер.

Можете скопировать этот файл с другого компьютера с такой же версией windows и вставить его к себе по пути C:\Users\Default.

Способ 2 . Можно попробовать заменить целиком папку "C:\Users\" с другого компьютера.

  • Возьмите флешку в формате FAT32 и запишите на нее с другого компа папку C:\Users\и закиньте к себе на комп.

Если кто знает, как еще исправить ошибку, "Служба профилей пользователей препятствует входу в систему" еще каким методом, то пишите в форме "сообщить об ошибке".


Возможные причины:

  • Эта проблема может возникнуть, если профиль пользователя был удален вручную с помощью командной строки или Windows Explorer пользователем или каким-либо программы. Профиль, который был удален вручную не удаляет идентификатор безопасности (SID) от пользователя в списке профилей в реестре. Так как SID по-прежнему присутствует, Операционка будет по-прежнему пытаться загрузить профиль с помощью ProfileImagePath значения в реестре, но оно указывает уже на несуществующий путь. В итоге профиль не может быть корректно загружен.
  • Эта проблема может возникать с профилем находящимся в состоянии резервной копии.
  • Ручное переименование C:\Пользователи\(имя пользователя) .

Важно!!!:

  • Если у Вас другая ошибка: «Your user profile was not loaded correctly! You have been logged on with a temporary profile.» то используйте эту(будет позже) статью для устранения проблемы

Your user profile was not loaded correctly! You have been logged on with a temporary profile.
Changes you make to this profile will be lost when you log off. Please see the event log for details or contact your administrator.

Первым делом нам нужно войти на компьютер с правами локального администратора и в Безопасном режиме, для этого во время запуска компьютера жмем клавишу F8, система предложит список вариантов загрузки где выбираем первый: Safe Mode(Безопасный режим)

1. Вариант первый

1.1. Жмем Пуск.

1.2. В строке поиска (Начать поиск) вводим Regedit и жмем Enter .

1.3. Если вылезет UAC, щелкните на Продолжить (Vista) либо Да ().

1.4. В Редакторе реестра переходим по ссылке:

1.5. В левой панели, обратите внимание на S-1-5 ….. папку (SID ключ) с длинным кодом, тот что .bak в конце номера. Выбираем его.

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

Примечание: Может иметь место ситуация когда точно такого же сида нет, поэтому придется его искать если например это терминальный сервер, на котором много пользователей.1/1

1.6. Для случая когда у нас 2 одинаковых сида отличающихся лишь окончанием.bak:

a) Смотрим на предыдущую картинку и по аналогии переименовываем тот сид что без окончания.bak в имя вида SID.bk где SID это существующий номер, должно получиться вот так:

б) Теперь тот СИД что стал .bak переименовываем, удалив окончание бак ,

1.7 Для случая когда у нас один одинаковый сид с окончанием .bak нам нужно просто переименовать SID по аналогии с предыдущим примером.

1.8 Теперь выбираем SID без окончания в левой колонке, а в правой колонке находим ключ RefCount, если его нет создаем новый ключ DWORD (32 bit) с именем RefCount со значением 0 и жмем ОК . Меняем значение ключа на 0. Это значение для этой записи будет означать сброс и возврат к исходному значению после перезагрузки компьютера и вход в учетную запись .

1.9 В левой панели выбираем ключ State жмем правой кнопкой мыши и выбираем изменить. Меняем значение ключа на 0. По аналогии с пунктом 1.8 если ключ не создан нужно его создать.

1.10 Теперь наш реестр будет выглядеть так:


1.11 Закрываем редактор реестра, перезагружаем компьютер в обычном режиме. Проверяем возможность входа в систему. Если не получилось приступаем ко второму варианту…

2. Вариант Второй

Удаление профиля учетной записи пользователя: Этот вариант возможен если вы не боитесь потерять дынные пользователя. Тут все проще:

2.1 Заходим в безопасном режиме под администратором

2.2 Запускаем Regedit и переходим в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList

2.3 Делаем экспорт ветки SID (много цифр в имени) убедившись что это именно тот SID по ключу ProfileImagePath проверив его значение (оно должно совпадать с папкой профиля проблемного пользователя)

2.4 Удаляем проблемный SID, Заходим c:\user\ и переименовываем папку с профилем пользователя в любое другое имя.

2.5 Создаем нового пользователя, с именем аналогичным проблемному

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

2.7 Заходим снова под админом в обычном режиме и возвращаем пользователю старые дынные из его старого переименованного пользователя

Все. Если ни один из способов не помог тут уже виной совершенно другая причина.

Всем Удачи!