记梦——关于“此电脑”窗口异常弹出的偏门解决办法

今天早晨发现昨天晚上做的数个梦,其中有一个有趣的梦关于软件,遂分享

问题

坛友求助

设备信息:

出现问题的是一台超市收银机,标准WindowsXP系统

问题描述

收银通过收银软件来完成。但软件突然出现故障,点击某一个按钮可能会突然跳出“此电脑”界面
任何一个按钮都有一定概率触发该错误,没有规律

已知条件

软件只有系统自带组件、收银软件
有键盘、鼠标、显示器;没有网络、蓝牙、外设接口
原先不会出现问题;软件已经尝试恢复出厂设置,不奏效

限制:

CPU:解决方案要求算力占用小于1.3Ghz 双核CPU的85%
内存:解决方案要求内存占用小于512MB的20%
硬盘:解决方案要求硬盘占用小于60GB的30%
时间:要求解决方案在10min内生效
其他:我附近没有可用的桌面设备,只有手机可用

思考

针对问题,很快地思考出一般解决方案

拿到收银软件的副本,进行调试

或是更粗暴一些

写一个程序,将收银软件窗口置顶,定时清理打开的此电脑窗口

很明显,这两个方法的任何步骤都没有条件执行
那么根据描述的信息,再检查
从上面可以得知,只有键盘和鼠标可以输入,说明要么通过GUI设置,要么手写代码

开始询问对方获得更多信息:

日常使用中会不会用到除了收银软件界面之外的界面?—不会

说明我们可以直接删除explorer.exe来解决问题,只要程序打开explorer.exe时不报错“找不到explorer.exe”即可
直接删除肯定不行,于是联想到最简单禁止程序启动的手段:映像劫持

收银软件开机自启动?—是

干掉explorer.exe后不能通过桌面快捷方式启动收银软件,如果不能自启还要添加开机启动项

是否操作过注册表?—没有

那么直接把批处理给到,让操作员抄一遍可能更快

解决

给出代码

set "key=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\explorer.exe"

reg %1 "%key%" /v Debugger /t REG_SZ /d "mshta.exe" /f||reg %1 "%key%" /v Debugger /f

mshta.exe是一个脚本解释器,重点是它接受不合理参数时不会有反应
设置后,将explorer.exe重定向到mshta.exe,实现在启动explorer.exe时转到以不合理参数启动mshta.exe,也就使得该操作没有任何意义
explorer.exe不会被启动,则它的窗口也不会被弹出
将上面的批处理代码在c:\windows中保存为iefoe.bat,只需要win+r运行iefoe add就是打开限制,iefoe delete就是关闭限制

其他

这是,肯定会有逻辑不清晰的地方,单纯分享给大家看看而已
有更好的解决办法,欢迎补充;有任何建议和批评也欢迎指正!

我记得 Windows 的一个组策略是替换 explorer.exe,若启动该组策略,用户登录后系统不会启动 explorer.exe,而是启动一个指定的应用程序。具体是哪一条组策略我忘了,有时间的话您可以研究研究。

这里有点 “穿帮”,“此电脑” 似乎是 Windows 10 以后的叫法,在 95、98、me、2000、XP、Server 2003 上还是叫 “我的电脑”。

这里有点 “穿帮”

预料之内的逻辑错误,因为我平常使用Windows10/7

我记得 Windows 的一个组策略是替换 explorer.exe,若启动该组策略,用户登录后系统不会启动 explorer.exe,而是启动一个指定的应用程序。具体是哪一条组策略我忘了,有时间的话您可以研究研究。

这个我知道,在常用的故障排除选项"带命令提示符的安全模式"中就利用了这一功能。但此功能只能避免系统加载时启动explorer.exe。如果题目中的收银软件是通过启动explorer.exe来打开窗口的话,则此方案无效;否则,此方案有效

把 explorer.exe 直接换成收银软件的主程序呢?一般而言,除非程序本身就是 explorer.exe 的扩展(比如 Windows 7 的照片查看器),大部分软件都不会绑定 explorer.exe 的。

之前我在 Windows 7 上用组策略把 explorer.exe 换成了任务管理器(taskmgr.exe),大部分软件都是可以正常启动的(在任务管理器的菜单栏中点击 文件 → 新建任务,即可唤出 “运行” 对话框)

1 个赞

好思路!

不过大家竟然会做梦吗(
我一年做梦次数(或者说能记起来自己做的梦的次数)不超过5次……所以每次做梦都会好好记录保存下来……

2 个赞

嗯…关于“设置系统启动时不启动explorer.exe”的方案,您引用的部分应该表述为

如果题目中的收银软件是通过启动explorer.exe来打开“我的电脑”窗口的话,则此方案无效


关于您的直接把explorer.exe替换为收银软件主程序的方案,我认为只要该收银软件有多实例检测,并且权限足够,则有效

可能是您平常学习太累的缘故(?

可能是个人体质?我从小学记事时起就是这个频率,一年大概2-6次做梦,每次做梦如获至宝(

1 个赞