Как исправить проблему «The User Profile Service failed the logon. User profile cannot be loaded

У профиля два назначения: управление использованием пароля и ограничением на кол-во используемых ресурсов сессии. Проверка использования пароля всегда включена, проверка использования ресурсов доступна только при включенном параметре 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.

В этой инструкции опишу шаги, которые помогут исправить ошибку «Невозможно загрузить профиль пользователя» в Windows 7. Обратите внимание, что сообщение «Вход в систему выполнен с временным профилем» можно исправить точно теми же способами (но есть нюансы, которые будут описаны в конце статьи).

Один из быстрых способов исправить возникшую ошибку, который, правда, не всегда оказывается работоспособным - использовать восстановление системы Windows 7. Порядок действий таков:


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

Другие возможные варианты решения проблемы со службой профилей Windows 7

Более быстрый и не требующий редактирования реестра способ исправить ошибку «Служба профилей препятствует входу в систему» - зайти в безопасном режиме с помощью встроенного аккаунта Администратора и создать нового пользователя Windows 7.

После этого, перезагрузите компьютер, войдите под вновь созданным пользователем и, при необходимости, перенесите файлы и папки от «старого» (из C:\Users\Имя_Пользователя).

Также на сайте Microsoft присутствует отдельная инструкция с дополнительными сведениями об ошибке, а также утилитой Microsoft Fix It (которая как раз удаляет пользователя) для автоматического исправления: https://support.microsoft.com/ru-ru/kb/947215

Вход в систему выполнен с временным профилем

Сообщение о том, что вход в Windows 7 был выполнен с временным профилем пользователя может означать, что в следствие каких-либо изменений, которые вы (или сторонняя программа) сделали с текущими настройками профиля, он оказался поврежден.

В общем случае, чтобы исправить проблему, достаточно использовать первый или второй способ из этого руководства, однако в разделе реестра ProfileList в данном случае может не оказаться двух одинаковых подразделов с.bak и без такого окончания для текущего пользователя (будет только с.bak).

В этом случае достаточно просто удалить раздел состоящий из S-1-5, цифр и.bak (правый клик мышью по имени раздела - удалить). После удаления, перезагрузите компьютер и войдите снова: в этот раз сообщений о временном профиле появиться не должно.

Ситауция такая: есть у меня 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.

Так что теперь у вас есть проблема, если вы пишете библиотеку, которая будет использоваться как кодом старой школы, написанным с 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: она ничего не делает .

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