Refcount

Содержание

Исправляем ошибку: Службе профилей пользователей не удалось войти в систему

Refcount

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

Проблемы выглядит следующим образом: служба профилей пользователей (ProfSvc) не может загрузить профиль пользователя Windows, соответственно пользователь компьютера не может войти в систему, а после ввода учетных данных появляется окно с ошибкой:

Службе “Служба профилей пользователей” не удалось войти в систему.

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

The User Profile Service failed the sign-in.

User profile cannot be loaded.

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

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

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

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

1. Редактирование параметров профиля в реестре

Запустите редактор реестра regedit с правами администратора и перейдите в ветку реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList.

Вы увидите список разделов (профилей) с названием в виде S-1-5-21-xxxxxxx. Это идентификаторы (SID) пользователей, по любому из них можно узнать имя учетной записи (например, следующей командой можно вывести список локальных пользователей и их SID: wmic useraccount get domain,name,sid).

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

Есть несколько вариантов:

  1. Имя ветки с нужным вам профилем пользователя оканчивается на .bak. В этом случае просто переименуйте ветку, убрав .bak;
  2. Вы нашли две ветки, указывающих на ваш профиль: с окончанием .bak и без. В этом случае переименуйте ветку без .bak, добавив в конце небольшой суффикс, например, S-1-5-21-xxxxx.backup. А у профиля с окончанием .bak удалите .bak в имени ветки реестра.

После того как вы переименовали ветку нужного профиля, нужно отредактировать значение параметров RefCount и State. Установите для них значения 0. Если у вас нет таких параметров, создайте их вручную (тип DWORD).

Убедитесь, что в значении ProfileImagePath указан путь к правильному каталогу профиля, а папка сама с профилем присутствует на диске и имеет такое же название, как и в ProfileImagePath. В моём случае это C:\Users\root.

После этого перезагрузите компьютер и попробуйте войти под профилем пользователя.

2. Восстановление Default профиля заменой поврежденного файла NTUSER.DAT

Если ошибка “Невозможно загрузить профиль пользователя” возникла при первом входе пользователя в систему, значит проблема с загрузкой профиля может быть связана с поврежденным файлом NTUSER.DAT в Default профиле.

В этом файле хранятся настройки пользователя, те параметры, которые загружаются в ветку реестра HKEY_CURRENT_USER при входе пользователя. При создании профиля для нового пользователя этот файл копируется в каталог с созданным профилем пользователя. Если файл NTUSER.

DAT удален или поврежден, служба User Profile Service не может создать профиль для нового пользователя.

Перейдите в каталог C:\Users\Default. В ней будет находиться файл NTUSER.DAT, переименуйте его, например, в NTUSER.DAT2. Далее вам нужно будет заменить этот файл аналогичным файлом с профиля другого пользователя, либо файлом с другого компьютера (с такой же версией Windows).  После этого перезагрузите систему, и если проблема была в испорченном NTUSER.DAT, то всё должно заработать.

В интернете так же встречается совет заменить всю папку C:\Users\Default, но суть остаётся та же, дело в замене файла NTUSER.DAT, который меняется и при замене папки.

3. Восстановление Windows из точки восстановления

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

В панели управления зайдите в раздел Recovery.

Далее жмите Open System Restore.

И следуйте указаниям мастера (несколько раз нажать далее), после чего система начнет восстановление.

Вы также можете увидеть подобную ошибку

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

4. Создание нового пользователя и перенос старых данных

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

  1. Запустите командную строку с правами администратора и введите netplwiz;
  2. В открывшейся оснастке нажмите Add;

Пункты 3 и 4 относятся к Windows 10, если у вас Windows 7, то просто пропустите их и перейдите к пункту 5.

  1. Выберите Sign in without a Microsoft account;
  2. Выберите Local account;
  3. Введите логин и пароль и нажмите Finish;
  4. Скопируйте все папки из каталога старого профиля (включая AppData) и вставьте (с заменой) в каталог профиля свежесозданного пользователя.

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

При таком способе восстановления вы не теряете данные, которые были в старом профиле. Если при копировании возникли проблемы, вы всегда можете получить доступ к данным со старого профиля просто зайдя в C:\users\ваш_старый_профиль

После того как как вы успешно зайдете под новым профилем, убедитесь, что у вас есть доступ к старым файлам, например, в папке Загрузки или Документы. Если доступа нет (выскакивает ошибка с запретом доступа), необходимо будет дать RW или FullControl права на эти папки вашему новому пользователю.

5. Права на чтение каталога C:\Users\Default

Проблем с отсутствием прав на чтение профиля пользователя Default чаще встречается в Windows Server. При попытке зайти в систему на Windows Server 2008 и выше, может встретиться подобная ошибка. В журнале ошибок вы можете увидеть соответствующую ошибку с ID 1509.

Для исправления просто дайте группе Users права на чтение C:\Users\Default, как указано ниже.

Если ошибка не решится, проверьте журнал ошибок Windows на предмет похожих ошибок, например, ID 1500, которая связана с повреждением файла NTUSER.DAT (решается вариантом #2 в этой статье).

Рекомендации по устранению проблемы

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

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

Самый сложный вариант — это когда вы не можете попасть в ваш профиль, у вас нет другого административного аккаунта, и система не создает временный профиль. То есть, вы никак не можете войти в Windows.

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

Затем следуйте описанным в статье шагам.

Источник: https://winitpro.ru/index.php/2020/04/08/sluzhbe-profilej-polzovatelej-ne-udalos-vojti-v-sistemu/

Об операторах Publish, Connect, RefCount и Share в RxSwift

Refcount

Привет, Хабр. Представляю вашему вниманию перевод статьи Understanding Publish, Connect, RefCount and Share in RxSwift. В оригинале статьи используется Swift второй версии и соответствующая версия RxSwift.

Я имел смелость переписать приведенные ниже куски кода под Swift 3. Так же хочется отметить, что такие понятия, как Observable и Sequence, можно считать одним и тем же. То же касается Observer и Subscriber.

Так же рекомендую почитать про share(), share Replay(), shareReplayLatestWhileConnected() в RxSwift.

В этой статье я постараюсь объяснить такие операторы для работы с Connectable Observable в RxSwift, как publish, connect, refCount и share. Они используются вместе в различных комбинациях. Очень важно понимать разницу между:

  • publish().connect()
  • и publish().refcount() (или просто share())

Активные и пассивные Observables

Прежде чем перейти к сути, мне хотелось бы сказать пару слов о hot и cold Observables. Как по мне, так понятия горячих и холодных Observables немного размыты. Давайте горячий Observable мы будем называть Active Sequence, а холодный Passive Sequence.

  • Active Sequence эмитит элементы постоянно, независимо от того, подписан на нее кто-нибудь или нет
  • Passive Sequence начинает эмитить элементы по запросу

Примером Passive Sequence может служить запрос в сеть, который начинается только тогда, когда мы подписались на последовательность. Примерами Active Sequence могут служить web-socket соединение, события таймера или текст, производимый UITextField'ом. И это все. Думайте об активных и пассивных последовательностях. Понятия горячих/холодных/теплых/прохладных Observables слишком запутанны и могут сбить с толку.

Несколько подписок на один Observable

Если Вы когда-нибудь подписывались дважды (или больше) на один и тот же Observable, Вы могли бы быть удивлены результатами. Взгляните на следующий кусочек кода: let url = URL(string: “https://habrahabr.ru/”)!let requestObservable = URLSession.shared .rx.

data(request: URLRequest(url: url)) requestObservable.subscribe(onNext: { print($0)}) requestObservable.subscribe(onNext: { print($0)}) Взглянув в консоль, мы увидим два HTTP респонса. Observable выполнил запрос дважды, хоть это противоречит нашим ожиданиям.

share() как спасение

Очевидно, что это не то, чего мы хотим от обычного HTTP-реквеста. Но мы можем изменить такое поведение и выполнить всего один запрос. Надо просто применить оператор share() к нашему Observable. let url = URL(string: “https://habrahabr.ru/”)!let requestObservable = URLSession.shared .rx.

data(request: URLRequest(url: url)) .share() requestObservable.subscribe(onNext: { print($0)}) requestObservable.subscribe(onNext: { print($0)}) Как и ожидалось, выполнился только один HTTP-запрос.
По сути, оператор share() — это просто обертка над publish().refcount().

Стоп-стоп-стоп! Что еще за publish(), что за refcount()?

publish() и его друг connect()

Тогда, когда применен оператор publish(), то Observable трансформируется в Connectable Observable. В документации ReactiveX говорится:
Connectable Observable похож на обычный Observable за исключением одного момента.

Он начинает производить элементы не тогда, когда на него подписываются, а только тогда, когда на нем вызван оператор connect().let myObservable = Observable.just(1).publish() print(“Subscribing”)myObservable.subscribe(onNext: { print(“first = \($0)”)}) myObservable.subscribe(onNext: { print(“second = \($0)”)}) DispatchQueue.main.

asyncAfter(deadline: .now() + 3) { print(“Calling connect after 3 seconds”) myObservable.connect()} /* Output:SubscribingCalling connect after 3 secondsfirst = 1second = 1*/
В приведенном выше примере, Observer'ы подписываются на myObservable сразу после того, как он был создан.

Но срабатывают они только через 3 секунды, когда был вызван оператор connect(). Проще говоря, connect() активирует Connectable Observable и включает подписчиков. Интересная штука в том, как происходит очистка ресурсов. Посмотрите на этот код. let myObservable = Observable .interval(1, scheduler: MainScheduler.instance) .publish()myObservable.

connect()print(“Starting at 0 seconds”) let mySubscription = myObservable.subscribe(onNext: { print(“Next: \($0)”)}) DispatchQueue.main.asyncAfter(deadline: .now() + 3) { print(“Disposing at 3 seconds”) mySubscription.dispose()} DispatchQueue.main.asyncAfter(deadline: .now() + 6) { print(“Subscribing again at 6 seconds”) myObservable.

subscribe(onNext: { print(“Next: \($0)”) })} // Output:/* Starting at 0 secondsNext: 0Next: 1Next: 2Disposing at 3 secondsSubscribing again at 6 secondsNext: 6Next: 7Next: 8Next: 9…*/ Даже если все подписчики отписались от нашего Observable, то последний все еще живет и продолжает производить события под капотом.

Примечание переводчикаМетод connect() возвращает Disposable. Таким образом, остановить продюсинг элементов можно, вызвав метод dispose() у данного Disposable, либо предоставить эту возможность DisposeBag'у.
Теперь давайте сравним это с publish().refcount().

Разница между publish().connect() и publish().refcount()

Вы можете воспринимать оператор refcount() как магию, которая за Вас обрабатывают отписку Observer'ов. refcount() вызывает connect() автоматически, когда подписывается первый Observer, так что нет нужды делать это самостоятельно. let myObservable = Observable .interval(1, scheduler: MainScheduler.instance) .

publish() .refCount()print(“Starting at 0 seconds”) let mySubscription = myObservable.subscribe(onNext: { print(“Next: \($0)”)}) DispatchQueue.main.asyncAfter(deadline: .now() + 3) { print(“Disposing at 3 seconds”) mySubscription.dispose()} DispatchQueue.main.asyncAfter(deadline: .

now() + 6) { print(“Subscribing again at 6 seconds”) myObservable.subscribe(onNext: { print(“Next: \($0)”) })}// Output:/* Starting at 0 secondsNext: 0Next: 1Next: 2Disposing at 3 secondsSubscribing again at 6 secondsNext: 0Next: 1Next: 2Next: 3…*/
Обратите внимание вот на что.

Когда мы подписались заново, Observable начал эмитить элементы с начала.

Заключение

Чувствуете разницу теперь? publish().connect() и publish().refcount() (или share()) управляют механизмом отписки от Obervable'ов по-разному.

Когда Вы используете publish().

connect(), Вам необходимо вручную управлять механизмом очистки ресурсов вашего Observable (об этом говорилось в примечании под спойлером).

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

С другой стороны, publish().refcount()/share() следит за том, как много Observer'ов подписано на Observable и не отключает первых от последнего до тех пор, пока существует хотя бы один подписчик. Другими словами, когда счетчик подписчиков падает до нуля, Observable «умирает» и перестает производить какие-либо элементы.

Источник: https://habr.com/ru/post/336662/

Служба профилей пользователей не удалось войти в систему windows 10

Refcount

Повреждение учетной записи пользователя является общей проблемой Windows.

Проблема возникает, когда вводите пароль или пин-код на экране блокировки и при нажатии enter будет выводиться ошибка “служба профилей пользователей не удалось войти в систему.

Невозможно загрузить профиль пользователя” в windows 10 или Служба профилей пользователей препятствует входу в систему в Windows 7. инструкция.

  1. Во первых попробуйте перезагрузить ноутбук.
  2. Попытайтесь для начала отключить комп от интернета и от локальной сети.
  3. Смотрите в самом низу, простой способ.

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

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

  1. Если у вас две учетных записи, то войдите под второй учетной, чтобы отредактировать реестр.
  2. Описано множество способов, как загрузиться в безопасном режиме.
  3. Нажмите несколько раз подряд кнопку перезагрузки на самом компьютере, чтобы вызвать автоматическое восстановление процесса. Выбрать устранение неполадок >Дополнительные параметры > параметры загрузки. Далее нажмите кнопку перезагрузки. После перезагрузки компьютера вы увидите список вариантов. Выберите безопасный режим с загрузкой сетевых драйверов путем нажатия соответствующей клавиши. Теперь как загрузились в безопасном режиме, нужно зайти в редактор реестра. (смотрите более подробно о среде восстановления)

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

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

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

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

Убедиться, что путь правильный нажмите на длинный ключ и с право в колонке должно быть имя ProfileImagePath, если не нашли, то листайте все длинные ключи пока не наткнетесь в правой колонке на ProfileImagePath с вашим сломанным профилем, в моем случае учетная запись C:\User\mywebpc.ru.

Шаг 4. Если вы неправильно переименовали папку профиля пользователя C:\User\mywebpc.ru пострадавшей учетной записи, то откройте проводник по пути C:\User\mywebpc.

ru и нажмите на сломанном профиле правой кнопкой мыши, выберите переименовать и введите вручную правильное имя профиля (mywebpc.ru).

После переименовки заходим обратно в реестре в папку ProfileList и смотрим, чтобы имя было написано, как на картинке (шаг 3) C:\User\mywebpc.ru.

Смотрите два варианта шаг 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, чтобы получились просто цифры S-1-5-21-19949….-1001. Следуйте дальше шагу 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 и с право в столбце нажмите два раза, чтобы открыть настройки параметра RefCount, и присвойте значение 0.

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

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

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

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

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

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

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

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

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

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

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

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

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

Шаг 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\GuestTUSER.DAT).
  4. Скопируйте его и вставьте в папку по умолчанию C:\Users\Default.
  5. Перезагрузить компьютер.

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

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

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

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

Загрузка комментариев

Источник: https://mywebpc.ru/windows/user-profile-service-failed-to-sign-in/

Поделиться:
Нет комментариев

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

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