最近遇到这样一个怪现象,就是每次打开电脑输入密码,突然提示“UserProfileService服务未能登录,无法加载用户配置文件”,然后就没办法正常开机了,为什么会这样呢?其实,原因一般为windows无法读取用户的配置文件,可以再重启一次,这样实在麻烦,治标不治本。了解到同事在清理文件的时候删除了/Users/TEMP/AppData/Roaming/下的一些文件。通过查阅大量资料并结合自己解决经验,现将自己解决经历及网上收集的解决办法整理如下,希望能帮助到某些有需要的朋友。以后再遇到这个问题,也不用辛苦的找解决办法了。
第一步:进入安全模式开启隐藏的超级管理员账户,然后用超级管理员正常登录来解决。
第二步:从登录提示“UserProfileService服务未能登录。无法加载用户配置文件。”出发,字面意思是“UserProfileService”服务出了点问题,于是找到此服务UserProfileService服务此服务负责加载和卸载用户配置文件。如果已停止或禁用此服务,用户将无法再成功登录或注销,应用程序在获取用户数据时可能会出问题,而且为接收配置文件事件通知注册的组件将无法接收这些通知。
检查该服务已正常启动而且配置为“自动”,但是“服务未能登录”又是什么意思呢?
第三步:查看系统日志分析问题。在“事件查看器”的“应用程序”一栏中找到大量来源为“Winlogon”和“UserProfileService”的错误和警告
截取其中一些日志记录:
1.错误UserProfileService1502
Windows不能加载本地存储的配置文件。此问题的可能原因是安全权限不足或本地配置文件损坏。
详细信息-另一个程序正在使用此文件,进程无法访问。
2.警告UserProfileService1515
Windows已经备份了此用户的配置文件。下次此用户登录时,Windows将自动尝试使用此备份的配置文件。
3.警告UserProfileService1511
Windows找不到本地配置文件,正在用临时配置文件让您登录。当您注销时,对此配置文件所作的更改将丢失。
4.警告UserProfileGeneral1509
Windows不能将文件C:/Users/Default/AppData/Roaming/Microsoft/Ime/IMSC5/复制到C:/Users/TEMP/AppData/Roaming/Microsoft/Ime/IMSC5/。这可能由网络故障或安全权限导致。
详细信息-拒绝访问。
5.警告UserProfileGeneral1509
Windows不能将文件C:/Users/Default/AppData/Roaming/Microsoft/Ime/IMSC5复制到C:/Users/TEMP/AppData/Roaming/Microsoft/Ime/IMSC5。这可能由网络故障或安全权限导致。
详细信息-拒绝访问。
6.Winlogon错误和警告的事件ID主要有600460016000
以上警告4和5好像显示某些配置文件复制出错,笔者检查C:/Users/TEMP/AppData/Roaming/Microsoft/Ime/下确实没有IMSC5文件夹,手动复制过去,注销管理员账户,登录问题账户依然没有解决,于是在“事件查看器”中“联机查找原因”,根据微软提供的一些信息(如下图),笔者找到了关键点。
笔者分析:似乎是用户配置文件出了问题,但是登录时尝试用“临时配置文件”过程又有毛病,双重因素导致不能登录。
第四步:重点分析注册表项【HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/WindowsNT/CurrentVersion/ProfileList】
一,开机按F8,从安全模式启动。
二,按Windows+R,键入“regedit”,回车。
三,进入:HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/WindowsNT/CurrentVersion/ProfileList,最后有两个文件夹,以“s-1-5...”开头的,一个有“.bak”后缀,一个没有。把这两个文件夹的名字互换。然后退出,重启电脑,问题就解决了。
附:如果还没有解决,继续以下步骤:
四,在新的那个带“.bak”后缀的文件夹中找到refcount,右键选modify,把值改为0,然后退出,重启。
我的折腾就到这里,还没遇到不能解决的情况。
如果你按此步骤还不能解决,请给我留言。
笔者深受上法启发,最终解决方法跟上法大同小异,不过更为简单,还是不绕弯子了,先看一下笔者带“.bak”后缀的注册表项:
对照正常管理员账户“State”子键的键值“0”,查看“高级系统设置”中“用户配置文件”一栏,正常账户状态为“本地”,而问题账户状态为“备份”。很明显State“8000”即为“备份”,State“0”为“本地”了。而不带“.bak”后缀的注册表项中"ProfileImagePath"子键的键值为“C:/Users/Temp”,而且仅有三四个子键。
笔者不知到是抽了还是有直觉,毫不犹豫直接把整个不带“.bak”后缀的注册表项删除,注销当前账户,登录问题账户,成功登录这时问题解决了,再查看注册表发现带“.bak”后缀的注册表项的“.bak”自动消失变成不带“.bak”的项,而且其下子键数量与刚开始一模一样,不过State变为了“0”,进入“高级系统设置”中“用户配置文件”一栏,两个账户状态均变“本地”了。
问题反思:"ProfileImagePath"子键的键值为“C:/Users/Temp”的注册表子项中子键数量明显比其他正常账户少,可能是对该项写入不完整导致不能通过“临时配置文件”登录,删除该项,登录时自动重建,“备份”状态转化为“本地”。
总之,笔者最简单的解决方法就是:
1、开机按F8进入到安全模式,登录系统(如果只是标准账户有问题,管理员账户没问题就不要安全模式了);
2、打开注册表,找到带“.bak”的项(如【HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/WindowsNT/CurrentVersion/ProfileList/S-1-5-21---1000.bak】)不要动它。
3、定位到带“.bak”的项上方一个不带“.bak”的项(如【HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/WindowsNT/CurrentVersion/ProfileList/S-1-5-21---1000】),确认该项包含键值为“C:/Users/Temp”的子键"ProfileImagePath",在左侧删除整个项,带“.bak”的项不要动,即可实现正常登录。登录之后会发现带“.bak”的项自动去掉了“.bak“。
当然,笔者第二次出现这个问题时,安全模式竟然无法进入,现在把这个问题的解决方法说一下:
开始/运行输入msconfig回车打开系统配置实用程序,进行如下设置:
就到这里吧,以后删除一些没用的文件的时候要小心。