问题描述
软件中有个模块在开机自动运行,并且会启动另外一个EXE(其中会获取一些硬件信息,用户信息,网络信息等)。
系统新建一个用户后,在登录新用户时,首次登录系统会创建用户目录,初始化桌面,outlook信息,IE信息等,在此过程中开机自动运行模块就启动了另外一个EXE,此时报错并弹出提示框“该程序没有与之关联来执行操作.....”。
错误分析
1)蓝屏代码0xc000021a,百度发现该蓝屏代码有人说是用户子系统损坏导致的,需要重装系统。
2)“该程序没有与之关联来执行操作,.....”,百度发现该错误需要修复注册表解决,主要是CLASS ROOT中exefile没有相应正确配置,但实际注册表是正常的
3)使用老用户(即管理员用户)可以正常登录进入桌面,新用户则出错
综上可推测,在新用户首次登录并且在用户环境未准备完成之前,启动EXE可能会造成蓝屏或启动失败,当然也有可能用户环境确实损坏了。
解决办法(分不同情况处理)
1)由于开机自动运行模块可以正常运行,在其运行其他EXE才报错,因此,可在开机自动运行模块判断用户是否准备完成,再运行其他EXE
在XP中,用户登录启动过程由WINLOGON读取注册表userinit来完成用户初始化,因此,我们可以判断userinit所值进程是否结束,结束则代表用户初始化完成。
2)开发XP系统GINA没有返回正常的用户配置路径或是否加载用户配置给winlogon,导致用户相关注册表无法创建或读取而蓝屏
3)本地用户数据损坏,备份并删除重新创建
4)域用户(漫游用户配置)损坏,备份并删除重新创建
5)域用户本地数据损坏,使用管理员登录后,删除用户目录再重新登录域用户