Одна из проблем, с которой часто сталкиваются пользователи — сообщение о том, что вы вошли в систему с временным профилем в Windows 10, 8 и Windows 7 с дополнительным текстом «Вы не можете получить доступ к своим файлам, и файлы, созданные в этом профиле, будут удалены при выходе из системы». В этой инструкции подробно о том, как исправить эту ошибку и войти с обычным профилем.
В большинстве случаев, проблема возникает после изменения (переименования) или удаления папки профиля пользователя, однако это не единственная причина. Важно: если у вас проблема возникла именно из-за переименования папки пользователя (в проводнике), то верните ей первоначальное имя, а затем прочтите: Как переименовать папку пользователя Windows 10 (для предыдущих версия ОС то же самое).
Примечание: в этой инструкции приведены решения для рядового пользователя и домашнего компьютера с Windows 10 — Windows 7, не находящегося в домене. Если вы управляете учетными записями AD (Active Directory) в Windows Sever, то тут я деталей не знаю и экспериментировать не доводилось, но обратите внимание на сценарии входа в систему или просто удалите профиль на компьютере и снова зайдите в домен.
Как исправить временный профиль в Windows 10
Сначала об исправлении «Вы вошли в систему с временным профилем» в Windows 10 и 8, а в следующем разделе инструкции — отдельно по Windows 7 (хотя и описываемый здесь способ тоже должен работать). Также, при входе с временным профилем в Windows 10 вы можете видеть уведомления «Стандартное приложение сброшено. Приложение вызвало проблему с настройкой стандартного приложения для файлов, поэтому оно сброшено».
Прежде всего, для всех последующих действий потребуется иметь учетную запись администратора. Если до появления ошибки «Вы вошли с временным профилем» ваша учетная запись имела такие права, то имеет и сейчас, и можно продолжать.
Если же у вас была учетная запись простого пользователя, то выполнять действия придется либо под другой учеткой (администратора), либо зайти в безопасный режим с поддержкой командной строки, активировать скрытую учетную запись администратора, а затем из неё выполнять все действия.
- Запустите редактор реестра (нажмите клавиши Win+R, введите regedit и нажмите Enter)
- Раскройте раздел (слева) HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ Windows NT\ CurrentVersion\ ProfileList и обратите внимание на наличие в нем подраздела с .bak в конце, выберите его.
- В правой части посмотрите на значение ProfileImagePath и проверьте, совпадает ли имя папки пользователя, указанное там с именем папки пользователя в C:\Пользователи (C:\Users).
Далее действия будут зависеть от того, что у вас получилось в пункте 3. Если имя папки не совпадает:
- Дважды кликните по значению ProfileImagePath и измените его так, чтобы в нем был правильный путь к папке.
- Если в разделах слева есть раздел точно с таким же именем, как текущий, но без .bak, кликните по нему правой кнопкой мыши и выберите «Удалить».
- Кликните правой кнопкой мыши по разделу с .bak на конце, выберите пункт «Переименовать» и уберите .bak.
- Закройте редактор реестра, перезагрузите компьютер и попробуйте зайти под тем профилем, где была ошибка.
Если путь к папке в ProfileImagePath верный:
- Если в левой части редактора реестра присутствует раздел с тем же именем (все цифры совпадают), что и раздел с .bak на конце, кликните по нему правой кнопкой мыши и выберите «Удалить». Подтвердите удаление.
- Кликните правой кнопкой мыши по разделу с .bak и также его удалите.
- Перезагрузите компьютер и попробуйте снова войти в поврежденную учетную запись — данные для нее в реестре должны будут создаться автоматически.
Далее способы, являющиеся удобными и быстрыми для исправления ошибки в 7-ке.
Исправление входа с временным профилем в Windows 7
По сути, это вариация способов, описанных выше, и, более того данный вариант должен сработать и для 10-ки, но опишу его отдельно:
- Войдите в систему под учетной записью администратора, отличающейся от той учетной записи, в которой есть проблема (например, под учеткой «Администратор» без пароля)
- Сохраните все данные из папки проблемного пользователя в другую папку (или переименуйте ее). Эта папка находится в C:\Пользователи (Users)\ Имя_пользователя
- Запустите редактор реестра и перейдите к разделу HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ Windows NT\ CurrentVersion\ ProfileList
- Удалите в нем подраздел, заканчивающийся на .bak
- Закройте редактор реестра, перезагрузите компьютер и зайдите под учетной записью, с которой была проблема.
В описанном способе снова будет создана папка пользователя и соответствующая запись в реестре Windows 7. Из папки, в которую вы ранее копировали данные пользователя, вы можете вернуть их во вновь созданную папку, чтобы они оказались на своих местах.
Если же вдруг способы, описанные выше, не смогли помочь — оставляйте комментарий с описанием ситуации, постараюсь помочь.
Одной из проблем, с которой периодически сталкиваются пользователи Windows, является сообщение о том, что они якобы вошли в систему с временным профилем. Оно появляется как в Windows 10, так и в Windows 8.1 с дополнительным текстом, гласящим следующее: “Вы не можете получить доступ к своим файлам, и файлы, созданные в этом профиле, будут удалены при выходе из системы”. С помощью этой инструкции вы сможете понять, как решить проблему Вы вошли в систему с временным профилем в Windows 10 и 8.1.
Зачастую данная проблема появляется в тех случаях, когда пользователи переименовывают или удаляют папку профиля юзера Windows. Но есть и другие причины, из-за которых она возникает. Стоит отметить, что данная инструкция предназначены для рядовых пользователей Windows 8.1 и 10, чьи компьютеры не находятся в домене. Если вы занимаетесь управлением учётных записей Active Directory в Windows Server, данная инструкция вам никак не поможет. Единственно, что мы можем вам предложить, так это попробовать понять сценарий входа в систему или же удалить профиль на компьютере и осуществить повторный вход в домен.
Как исправить временный профиль в Windows 10 и 8.1
Перед тем, как выполнять все последующие действия, вы должны вспомнить, обладала ли ваша учётная запись правами администратора. Если до появления ошибки с сообщением “Вы вошли с временным профилем”, она обладала ими, то и сейчас имеет их, и вы можете продолжать. Если же ваша учётная запись обладала правами простого пользователя, вам придётся выполнять действия под учётной записью администратора, либо же активировать скрытую учётную запись администратора в безопасном режиме с поддержкой командной строки.
Если все условия соблюдены, сделайте следующее:
- Нажмите на сочетание клавиш Win+R для отображения окна “Выполнить”, введите regedit в его поле и нажмите на Enter.
- Слева в окне редактора реестра перейдите по следующей ветке:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\ProfileList
- Отыщите в “ProfileList” подраздел с .bak на конце и выберите его.
- В правой части окна редактора реестра отыщите значение «ProfileImagePath» и убедитесь, совпадает ли имя каталога пользовательского профиля с указанным именем папки в C:\Пользователи или C:\Users.
Дальнейшие действия нужно выполнять, отталкиваясь от того, совпадает ли имя папки или нет.
Если имя папки не совпадает:
- Вам нужно дважды кликнуть по значению ProfileImagePath и изменить его таким образом, чтобы в нём был указан правильный путь к папке пользователя.
- Если в левой части окна редактора реестра имеется раздел с таким же названием, как и текущий, но без окончания .bak, нажмите на него правой кнопкой мышки и выберите пункт “Удалить”.
- Правой кнопкой мышки нажмите на раздел с .bak в конце, в выпадающем меню выберите пункт “Переименовать” и удалите .bak.
- Закройте окно редактора реестра, перезагрузите ПК и повторно попробуйте зайти в ту учётную запись, с которой у вас возникла проблема.
Если имя папки совпадает:
- В левой части окна редактора реестра кликните по разделу с таким же названием, что и с .bak на конце, и выберите «Удалить».
- Выберите раздел с .bak на конце и также удалите его.
- Закройте окно редактора реестра, выполните перезагрузку компьютера и попробуйте войти в повреждённую учётную запись. Система должна создать для неё все необходимые данные и занести в реестр.
ОС Виндовс 7 содержит огромное количество различных функций, которые не известны обычных юзерам. Такие возможности служат для того, чтобы выполнить узконаправленные задачи. Такой функцией является активированный вход в систему под временным профилем. Он полезен, если есть необходимость на какой-то промежуток времени дать ваш ПК пользователю, который может совершить действия, наносящие ущерб компьютеру. Изменения, выполненные при активации временной учетной записи, не сохраняются.
Отключаем вход с временным профилем
Гораздо чаще пользователи сталкиваются с задачей, когда необходимо отключить временный профиль, а не провести его активацию. Это обусловлено тем, что в связи со всевозможными конфликтными ситуациями на системном уровне, багами, некорректной работой ПК и еще в ряде случаев, временный профиль имеет свойство активироваться в автоматическом режиме при каждом запуске. Выполнив загрузку с временным профилем, совершать привычные действия и работать нет возможности, а выключить его самопроизвольное включение у большинства юзеров не получается, так как запуск происходит без их вмешательства (автоматически).
Перейдем к способу исправления данной ситуации. Если при включение ПК в нижнем углу экрана справа возникает надпись «Вы вошли в систему с временны профилем», это значит, что каждое действие, совершенно на данном компьютере, не будет сохранено. Исключения составляют серьёзные изменения, которые будут внесены в работу ОС (они будут сохранены). Это значит, что изменять данные в реестре под временным профилем можно. Но для того чтобы устранить различные неполадки, необходим основной профиль.
Произведите запуск системы с правами администратора и выполните следующие шаги:
Урок: Как получить права администратора в Windows 7
- Перейдите по следующему адресу:
C:\Пользователи (Users)\ Имя пользователя проблемного профиля
В данном примере имя проблемного профиля Drake, в вашем случае оно может быть другим.
- Данные из этой директории скопируйте в папку профиля администратора. При условии, что в этой папке слишком много файлов, которые будут очень долго копироваться, вы можете изменить имя папки.
- Необходимо открыть редактор базы данных. Осуществите совместное нажатие по клавишами «Win+R» и напишите
regedit
. - В запущенном редакторе реестра переместитесь по адресу:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
- Произведите удаления подраздела, который заканчивается на .bak, и перезапустите систему.
Выполнив все действия, которые были описаны выше, заходите под «вылеченный» профиль. Проблема будет исправлена. ОС Виндовс 7 в автоматическом режиме сгенерирует новую директорию для того, чтобы хранить данные пользователей, в которую можно занести всю нужную информацию, заблаговременно скопированную ранее.
Наша группа в TelegramПолезные советы и помощь
Администраторы время от времени должны удалять старые профили пользователей (уволенные пользователи, неактивные пользователи, и т.д.) в каталоге C:\Users на рабочих станциях и серверах Windows. Чаще всего с задачей очисткой профилей пользователей Windows сталкиваются на терминальных серверах RDS (Remote Desktop Services).
Основная проблема терминальных серверов – постоянный рост размеров каталогов профилей пользователей на диске. Частично эта проблема решается политиками квотирования размера профиля пользователя с помощью FSRM или NTFS квот, использованием профилей типа FSLogix или User Profile Disk, перемещаемыми папками и т.д. Но при большом количестве RDS пользователей в папке C:\Users со временем накапливается огромное количество каталогов с неиспользуемыми профилями пользователей.
Содержание:
- Как вручную удалить профиль пользователя в Windows?
- Групповая политика для автоматической очистки старых профилей
- PowerShell скрипт для удаления старых профилей пользователей в Windows
Как вручную удалить профиль пользователя в Windows?
В Windows вы можете вручную удалить профиль пользователя через панель управления.
- Откройте Advanced System Settings (команда
SystemPropertiesAdvanced
) -> User Profiles -> Settings; - В этом окне перечислен список всех профилей пользователей (локальных и доменных), которые хранятся на этом компьютере. Размер каждого профиля пользователя на диске указан в столбце Size.
- Выберите пользователя, чей профиль нужно удалить и нажмите кнопку Delete.
В Windows 11/10 и Windows Server 2022/2019 вы можете удалить профили пользователей с диска через приложение Settings. Перейдите в раздел Accounts -> Access work and school (или выполните команду быстрого доступа
ms-settings:otherusers
). Выберите пользователя и нажмите Remove чтобы удалить его данные с компьютера.
При корректном удалении профиля пользователя с диска будет удален каталог профиля в C:\Users и запись о пользователе в реестре.
Многие начинающиеся администраторы пытаются вручную удалить каталог с профилем пользователя из папки C:\Users. В этом случае нужно обязательно вручную удалить информацию о профиле из реестра Windows:
- Откройте редактор реестра
regedit.exe
; - Перейдите в ветку HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
- Для каждого пользователя, выполнившего локальный вход в систему (этот метод входа должен быть разрешен пользователю настройками параметра Allow log on locally в GPO), создается отдельная ветка с SID пользователя в качестве имени;
- Вы можете найти раздел реестра, соответствующий пользователю по SID, или можете вручную просмотреть содержимое всех вложенных разделв, пока не найдете раздел, в котором значение ProfileImagePath указывает на каталог с профилем пользователя на диске (например,
C:\Users\kbuldogov
); - Удалите данный раздел реестра, чтобы завершить корректное удаление профиля.
Также вы можете удалить профиль конкретного пользователя с помощью PowerShell:
Get-CimInstance -Class Win32_UserProfile | Where-Object { $_.LocalPath.split(‘\’)[-1] -eq 'kbuldogov' } | Remove-CimInstance
Эта команда удалит как каталог на диске, так и ссылку на профиль пользователя kbuldogov в реестре HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList.
Эта команда будет работать как в Windows PowerShell, так и в новых версиях PowerShell Core 6.x,7.x
Можно удалить профиль пользователя на удаленном компьютере с помощью PowerShell Remoting и командлета Invoke-Command:
$compname="wks21s32"
$user = "kbuldogov"
Invoke-Command -ComputerName $compname -ScriptBlock {
param($user)
Get-CimInstance -Class Win32_UserProfile | Where-Object { $_.LocalPath.split(‘\’)[-1] -eq $user } | Remove-CimInstance
} -ArgumentList $user
Групповая политика для автоматической очистки старых профилей
В Windows есть специальный параметр групповой политики для автоматического удаления старых профилей пользователей старше xx дней. Вы можете включить этот параметр с помощью локального редактора GPO (
gpedit.msc
) или с помощью консоли управления доменными GPO (
gpmc.msc
). В этом примере на назначим политику автоматической очистки профилей на хосты в ферме RDS, которые вынесены в отдельный контейнер (Organizational Unit) Active Directory.
Прежде чем применять политику удаления старых профилей ко всем хостам, настоятельно рекомендуем проверить ее на тестовом сервере. Выведите один из серверов RDSH в режим обслуживания и протестируйте политику на нем.
- Найдите OU с компьютерами/серверами, на который вы хотите применить политику очистки старых профилей пользователей. Щелкните по OU и выберите Create a GPO in this domain and Link it here;
- Укажите имя политики и отредактируйте GPO;
- Перейдите в раздел Конфигурация компьютера -> Административные шаблоны -> Система -> Профили пользователей (Computer Configuration -> Administrative Templates -> System -> User Profiles);
- Откройте параметр “Удалять при перезагрузке системы профили пользователей по истечении указанного числа дней” (Delete user profiles older than a specified number days on system restart);
- Включите политику и укажите через сколько дней профиль пользователя считается неактивным и “Служба профилей пользователей Windows” можно автоматически удалить такой профиль при следующей перезагрузке. Обычно тут стоит указать не менее 45-90 дней;
- После применения новых настроек групповых политк, служба User Profile Services на ваших серверах Windows будет автоматически удалять старые профили пользователей. Удаление выполняется при перезагрузке сервера.
При использовании этой политики нужно быть уверенным, что при выключении/перезагрузке сервера нет проблем с системным временем (время не сбивается), иначе могут быть удалены профили активных пользователей.
Другой недостаток — вы не можете запретить удаление определенных профилей, например, локальных учетных записей, администраторов и т.д.
В версиях до Windows 11/10 и Windows Server 2022/2019 эта политика работала некорректно. Дело в том, что неактивноть профиля пользователя ранее определялась по дате именения файла NTUSER.dat. При установке обновлений Windows, служба Trusted Installer может менять дату изменения файла NTUSER.dat в профиле каждого пользователя. В результате служба Win32_UserProfile считает, что профиль использовался недавно.
В современных версиях Windows эта политика проверяет активность профиля пользователей по параметрам LocalProfileUnloadTimeLow и LocalProfileUnloadTimeHigh в ветке
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\<User Sid>
.
Вы можете получить значения параметров реестра LocalProfileLoadTimeLow и LocalProfileUnloadTimeHigh в привычном формате времени с помощью скрипта:
$profilelist = Get-ChildItem "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" foreach ($p in $profilelist) { try { $objUser = (New-Object System.Security.Principal.SecurityIdentifier($p.PSChildName)).Translate([System.Security.Principal.NTAccount]).value } catch { $objUser = "[UNKNOWN]" } Remove-Variable -Force LTH,LTL,UTH,UTL -ErrorAction SilentlyContinue $LTH = '{0:X8}' -f (Get-ItemProperty -Path $p.PSPath -Name LocalProfileLoadTimeHigh -ErrorAction SilentlyContinue).LocalProfileLoadTimeHigh $LTL = '{0:X8}' -f (Get-ItemProperty -Path $p.PSPath -Name LocalProfileLoadTimeLow -ErrorAction SilentlyContinue).LocalProfileLoadTimeLow $UTH = '{0:X8}' -f (Get-ItemProperty -Path $p.PSPath -Name LocalProfileUnloadTimeHigh -ErrorAction SilentlyContinue).LocalProfileUnloadTimeHigh $UTL = '{0:X8}' -f (Get-ItemProperty -Path $p.PSPath -Name LocalProfileUnloadTimeLow -ErrorAction SilentlyContinue).LocalProfileUnloadTimeLow $LoadTime = if ($LTH -and $LTL) { [datetime]::FromFileTime("0x$LTH$LTL") } else { $null } $UnloadTime = if ($UTH -and $UTL) { [datetime]::FromFileTime("0x$UTH$UTL") } else { $null } [pscustomobject][ordered]@{ User = $objUser SID = $p.PSChildName Loadtime = $LoadTime UnloadTime = $UnloadTime } }
PowerShell скрипт для удаления старых профилей пользователей в Windows
Вы можете удалять профили неактивных или заблокированных пользователей с помощью скрипта PowerShell.
Сначала попробуем подсчитать размер профиля каждого пользователя в папке C:\Users c помощью простого скрипта из статьи “Вывести размер папок с помощью PowerShell”:
gci -force ‘C:\Users\’-ErrorAction SilentlyContinue | Where { !($_.Attributes -match " ReparsePoint") }| ? { $_ -is [io.directoryinfo] } | % {
$len = 0
gci -recurse -force $_.fullname -ErrorAction SilentlyContinue | % { $len += $_.length }
$_.fullname, ‘{0:N2} GB’ -f ($len / 1Gb)
$sum = $sum + $len
}
“Общий размер профилей”,'{0:N2} GB’ -f ($sum / 1Gb)
Итого суммарный размер всех профилей пользователей в каталоге C:\Users около 22 Гб.
Теперь выведем список пользователей, профиль которых не использовался более 60 дней. Для поиска можно использовать значение атрибута профиля LastUseTime.
Get-WMIObject -class Win32_UserProfile | Where {(!$_.Special) -and ($_.ConvertToDateTime($_.LastUseTime) -lt (Get-Date).AddDays(-60))}| Measure-Object
У меня на терминальном сервере оказалось 143 профиля неактивных пользователей (общим размером около 10 Гб).
Следующий PowerShell скрипт выведет список подробную информацию о профилях пользователей, которые не обновлялись более 60 дней. Скрипт сконвертирует SID пользователя в имя, посчитает размер профиля каждого пользователя и выведет все в таблице:
$allprofilesinfo = @() $OldProfiles=Get-WMIObject -class Win32_UserProfile | Where {(!$_.Special) -and ($_.ConvertToDateTime($_.LastUseTime) -lt (Get-Date).AddDays(-60))} Foreach ($OldProfile in $OldProfiles) {$objSID = New-Object System.Security.Principal.SecurityIdentifier ($OldProfile.SID) $objUser = $objSID.Translate( [System.Security.Principal.NTAccount]) $userinfo = New-Object PSObject -Property @{ userName = $objUser.Value ProfilePath = $OldProfile.localpath LastUsedDate = $OldProfile.ConvertToDateTime($OldProfile.LastUseTime) FolderSize = "{0:N2} GB" -f ((gci –force $OldProfile.localpath –Recurse -ErrorAction SilentlyContinue| measure Length -s).sum / 1Gb) } $allprofilesinfo += $userinfo } $allprofilesinfo
Чтобы удалить все эти профили достаточно добавить перенаправить список на команду Remove-WmiObject (перед использование скрипта удаления желательно несколько раз перепроверить его вывод с помощью параметра –WhatIf ):
Get-WMIObject -class Win32_UserProfile | Where {(!$_.Special) -and (!$_.Loaded) -and ($_.ConvertToDateTime($_.LastUseTime) -lt (Get-Date).AddDays(-30))} | Remove-WmiObject –WhatIf
Как мы уже упомянули выше, при установке некоторых обновлений Windows, служба Trusted installer может менять дату изменения файла NTUSER.dat в профиле каждого пользователя.
На скриншоте выше видно, что все профили были изменены примерно в одно и тоже время. Проверьте дату последней установки обновлений в Windows:
gwmi win32_quickfixengineering |sort installedon |select InstalledOn -Last 1
Или с помощью модуля PSWindowsUpdate:
Get-WUHistory | Select-Object -First 20
Скорее всего она совпадет с датой изменения профилей. Поэтому в старых версиях Windows можно получить список неактивных профилей с помощью другого скрипта, который проверяет атрибуту lastwritetime каталога пользователя:
$USERS= (Get-ChildItem -directory -force 'C:\Users' | Where { ((Get-Date) — $_.lastwritetime).days -ge 60 } | % {'c:\users\' + $_.Name})
foreach ($User in $USERS) {
Get-WMIObject -class Win32_UserProfile | Where {(!$_.Special) -and (!$_.Loaded) -and ($_.LocalPath -eq $User)} | Remove-WmiObject WhatIf }
Чтобы не удалять профили некоторых пользователей, например, специальные аккаунты System и Network Service, учетную запись локального администратора, пользователей с активными сессиями, список аккаунтов-исключений), нужно модифицировать скрипт следующим образом:
#Список аккаунтов, чьи профили нельзя удалять
$ExcludedUsers ="Public","zenoss","svc",”user_1”,”user_2”
$LocalProfiles=Get-WMIObject -class Win32_UserProfile | Where {(!$_.Special) -and (!$_.Loaded) -and ($_.ConvertToDateTime($_.LastUseTime) -lt (Get-Date).AddDays(-60))}
foreach ($LocalProfile in $LocalProfiles)
{
if (!($ExcludedUsers -like $LocalProfile.LocalPath.Replace("C:\Users\","")))
{
$LocalProfile | Remove-WmiObject
Write-host $LocalProfile.LocalPath, "профиль удален” -ForegroundColor Magenta
}
}
Вы можете настроить запуск этого скрипта через shutdown скрипт групповой политики или по расписанию заданием планировщика. (перед настройкой автоматического удаления профилей внимательно протестируйте скрипт в своей среде!).
Можно модифицировать скрипт, чтобы автоматически удалять пользователи всех пользователей, которые добавлены в определенную группу AD. Например, вы хотите автоматически удалять профили уволившихся пользователей. Просто добавьте такие учетные записи в группу DisabledUsers и выполните на сервере скрипт:
$users = Get-ADGroupMember -Identity DisabledUsers | Foreach {$_.Sid.Value}
$profiles = Get-WmiObject Win32_UserProfile
$profiles | Where {$users -eq $_.Sid} | Foreach {$_.Delete()}