bat命令清理Window应用注册表(Unity开发Window应用)
- 介绍
- 出现的问题
- 方案一
- 方案二
- 方案二解决方案
- 1. 首先使用【Win】+【R】组合快捷键,快速打开运行命令框,在打开后面键入命令:【Regedit】
- 2. 完后后按回车键(或点击“确定”)就可以打开Win10注册表编辑器
- 总结
介绍
前段时间我们公司发布的Window应用出现了个Bug,这让用户无法正常登录应用。
出现的问题
当用户登录时记住登录的账号密码,方便下一次快捷登录进来,这里前期的测试都是OK的在Window电脑上,这时当用户记住密码登录后退出应用再次进入的时候,这时候网络不稳定的因素出现了,服务器判断密码错误,这时候Unity前端这块应该是登录判断的逻辑有遗漏点,所以造成了上述说的现象。
那么这里我来说一下我们公司的解决方案
方案一
因为我们公司做的项目是用ulua开发的,所以我们登录的这一块把逻辑完善了一下,重新打包lua资源上传到服务器,解决。
方案二
这里就是我写这篇文章的目的,用bat命令行去清理应用的注册表。
说这里之前我先说一个问题,在Unity中我们经常会用到PlayerPrefs存放数据,不管是你初始化什么配置文件也好,本地持久化也好,大部分选择都会是用这个对吧?
用Unity开发的Window应用PlayerPrefs的数据是存放在哪里呢?
这个问题我之前是没有深入研究过的,因为这个bug的出现,让我知道了原来Window的应用所存放的数据都是放在Window的注册表内(难怪我小时候下载游戏的时候经常是遇到对注册表的操作),小时候玩过的CS,当时进入游戏的时候,因为没有注册码所以游戏安装完之后会在里面找注册表,然后注册之后,方可进入游戏正常体验。
这里其实也一样,我们开发的自动登录功能是需要存一个是否勾选自动登录的复选框的,这时候存在注册表里,因为这里登录逻辑遗漏的问题,自动登录的时候如果密码错误之后的回调会继续去判断是否勾选自动登录,然后获取存的账号密码再次进行登录,所以我们这里采用了bat的方式去清除一下我们存放的注册表。
方案二解决方案
看一下应用存放在注册表的地址,先看一下Unity工程中的工程名字设置
当应用都安装完成运行出错之后,我们找到对应注册表的文件存放位置(针对Window系统)
1. 首先使用【Win】+【R】组合快捷键,快速打开运行命令框,在打开后面键入命令:【Regedit】
2. 完后后按回车键(或点击“确定”)就可以打开Win10注册表编辑器
通常下载的应用注册表都会存放在 HKEY_CURRENT_USER 中的 Software下
找一下我们应用存放的路径
双击一下autologin_h53197065 分析一下这条数据
这里数值数据1代表的就是Unity的True
这里数值数据0代表的就是Unity的False
可以直接点击确定修改
双击一下13300000005password_h3575718062 分析一下这条数据
最后面的812195就是我们输入的密码
中间的38 31 32 31 39 35 00据我猜测应该是像ASCII码一样 00代表 .
有兴趣的可以去研究一下他这个结构,一起交流一下
原理我们都明白了,最后说一下.bat命令快捷设置
创建一个txt文件,后缀改为.bat文件,打开进行编辑
reg add HKEY_CURRENT_USER\Software\京师乐育\情境思维游戏(教师) /v autologin_h53197065 /t reg_dword /d 0 /f
使用上述命令即可,这里对应的文件夹名字和文件名一定要准确
reg add就是像注册表中添加一条数据(修改也是用这个)
reg delete HKEY_CURRENT_USER\Software\JSLY /f
这个是删除命令 /f是执行命令行的意思 可以删除单个文件也可以删除某个文件夹
总结
bat这个只是一个语法,在网上都是可以查到的,但是其中注册表的原理应该去了解一下,当我们创建好了bat之后如果出现问题,直接双击运行即可,当代命令行操作完成即可完成bug的修复。