今天早晨发现昨天晚上做的数个梦,其中有一个有趣的梦关于软件,遂分享
问题
坛友求助
设备信息:
出现问题的是一台超市收银机,标准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就是关闭限制
其他
这是梦,肯定会有逻辑不清晰的地方,单纯分享给大家看看而已
有更好的解决办法,欢迎补充;有任何建议和批评也欢迎指正!