Refcount
Содержание
- 1 Исправляем ошибку: Службе профилей пользователей не удалось войти в систему
- 1.1 1. Редактирование параметров профиля в реестре
- 1.2 2. Восстановление Default профиля заменой поврежденного файла NTUSER.DAT
- 1.3 3. Восстановление Windows из точки восстановления
- 1.4 4. Создание нового пользователя и перенос старых данных
- 1.5 5. Права на чтение каталога C:\Users\Default
- 1.6 Рекомендации по устранению проблемы
- 2 Об операторах Publish, Connect, RefCount и Share в RxSwift
- 3 Служба профилей пользователей не удалось войти в систему windows 10
Исправляем ошибку: Службе профилей пользователей не удалось войти в систему
В этой статье мы рассмотрим все варианты решения ошибки загрузки профиля пользователя на 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.
Есть несколько вариантов:
- Имя ветки с нужным вам профилем пользователя оканчивается на .bak. В этом случае просто переименуйте ветку, убрав .bak;
- Вы нашли две ветки, указывающих на ваш профиль: с окончанием .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. Создание нового пользователя и перенос старых данных
Если другие варианты вам не помогли, можно создать нового пользователя и перенести в него данные из старого профиля. Этот способ обязательно сработает, так как мы будем создавать нового пользователя с новым профилем.
- Запустите командную строку с правами администратора и введите netplwiz;
- В открывшейся оснастке нажмите Add;
Пункты 3 и 4 относятся к Windows 10, если у вас Windows 7, то просто пропустите их и перейдите к пункту 5.
- Выберите Sign in without a Microsoft account;
- Выберите Local account;
- Введите логин и пароль и нажмите Finish;
- Скопируйте все папки из каталога старого профиля (включая 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/
Привет, Хабр. Представляю вашему вниманию перевод статьи 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 выполнил запрос дважды, хоть это противоречит нашим ожиданиям.
Очевидно, что это не то, чего мы хотим от обычного 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
Повреждение учетной записи пользователя является общей проблемой Windows.
Проблема возникает, когда вводите пароль или пин-код на экране блокировки и при нажатии enter будет выводиться ошибка “служба профилей пользователей не удалось войти в систему.
Невозможно загрузить профиль пользователя” в windows 10 или Служба профилей пользователей препятствует входу в систему в Windows 7. инструкция.
- Во первых попробуйте перезагрузить ноутбук.
- Попытайтесь для начала отключить комп от интернета и от локальной сети.
- Смотрите в самом низу, простой способ.
Вариант 1. Исправить профиль учетной записи пользователя
Иногда ваша учетная запись может быть повреждена и это мешает вам получить доступ к файлам в windows 10. Зайдем в редактор реестра несколькими способами, через безопасный режим:
- Если у вас две учетных записи, то войдите под второй учетной, чтобы отредактировать реестр.
- Описано множество способов, как загрузиться в безопасном режиме.
- Нажмите несколько раз подряд кнопку перезагрузки на самом компьютере, чтобы вызвать автоматическое восстановление процесса. Выбрать устранение неполадок >Дополнительные параметры > параметры загрузки. Далее нажмите кнопку перезагрузки. После перезагрузки компьютера вы увидите список вариантов. Выберите безопасный режим с загрузкой сетевых драйверов путем нажатия соответствующей клавиши. Теперь как загрузились в безопасном режиме, нужно зайти в редактор реестра. (смотрите более подробно о среде восстановления)
Шаг 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” с другого профиля.
Включите отображение скрытых папок.
- Зайдите в систему в безопасном режиме с учетной записью профиля который работает.
- Найдите файл (C:\Users\Default) “NTUSER.DAT” и переименуйте расширение .DAT на .OLD. Должно быть (NTUSER.OLD).
- Найдите файл “NTUSER.DAT” в рабочем профиле таких как “Гость”,”Общие”. Пример (C:\Users\GuestTUSER.DAT).
- Скопируйте его и вставьте в папку по умолчанию C:\Users\Default.
- Перезагрузить компьютер.
Можете скопировать этот файл с другого компьютера с такой же версией windows и вставить его к себе по пути C:\Users\Default.
Способ 2. Можно попробовать заменить целиком папку “C:\Users\” с другого компьютера.
- Возьмите флешку в формате FAT32 и запишите на нее с другого компа папку C:\Users\и закиньте к себе на комп.
Если кто знает, как еще исправить ошибку, “Служба профилей пользователей препятствует входу в систему” еще каким методом, то пишите в форме “сообщить об ошибке”.
Загрузка комментариев
Источник: https://mywebpc.ru/windows/user-profile-service-failed-to-sign-in/