无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 1983|回复: 0
打印 上一主题 下一主题

关于系统变量丢失的一个极端棘手的问题,老九最好来看一下

[复制链接]
跳转到指定楼层
1#
发表于 2009-11-20 20:38:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
多数声卡驱动最后都来一个PECMD FIND Explorer.EXE,KILL EXPLORER.EXE,再出现桌面后前面定义的系统级变量就会全部失效(可以进提示符用set命令查看),这个时候如果批处理或INI文件中用到前面定义的变量就会因找不到而出问题(花了几天时间才找到我的那个PE就是这种情况);虽然SET中没有,但仔细看一下注册表系统环境变量区(HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment)中并未消失,如果这时候运行一次PECMD ENVI,系统变量可以恢复。

1、找到问题原因尝试解决,在声卡驱动文件中追加一条命令PECMD FIND Explorer.EXE,ENVI(或直接用PECMD ENVI)-->测试进SET一看不行,找到原因,系统重新加载Explorer.EXE是需要时间的,等它出来时批处理执行早完了,即相当于这个刷新环境变量的命令是在上一个Explorer.EXE进程中。基于这个猜测,将命令多重复几行,效果出来了,SET中系统变量都出来了。多执行这几行实质上是在等桌面出来,各个机器的快慢不一,究竟执行几条合适很难说。况且在系统启动阶段如果选择驱动声卡,这几行是没必要执行的。因此这种方法解决不理想。

2、在INI或CMD执行时,碰到不能获得自定义的系统变量时再执行ENVI。仔细一想,是行不通的,因为本次执行ENVI只对下一次执行的环境有影响,而本次进程的环境,在进入这个进程时已经初始化成前面的环境。

3、目前只能采用从注册表系统环境变量区将系统变量取出的笨办法。

这是INI文件中恢复三个系统变量
_SUB RESETOSV
REGI $HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\IniDir,IniDir
REGI $HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\IniDrv,IniDrv
REGI $HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\BootOS,BootOS
_END

CMD文件是用REG、FIND和FOR配合也可进行取用。


这个问题要圆满解决,可能要老九出马了。即在KILL EXPLORER.EXE时再装载EXPLORER.EXE后恢复系统级变量。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-10-5 06:59

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表