易语言操作注册表-自制一个小工具以及技术点分享

平常我们会遇到很多这种事情,为了避免来回设置我做了一个小工具,禁用中文输入这样就能安心的玩耍了。

翻车场景

        说一下制作思路,系统的设置信息存储在注册表中,我们通过更改注册表来实现目的。打开DOS,掏出“reg add /?”来学习一下命令的使用。本来我想用DOS做但是Reg ADD做个脚本,奈何老是执行失败。我在执行"REG ADD HKLM\Software\MyCo /v Path /t REG EXPAND SZ /d %systemroot %"(这个命令算是个系统给的案例把)的时候可以但是换了目录就不行,哪怕提权也不行,气的我掏出了易语言。

reg add 命令使用语法

        翻阅(百度)资料得知一下信息:

        1.“HKEY_CURRENT_USER/Control Panel/Input Method/Hot Keys”(保存的是当前用户的快捷键配置)和“HKEY_USERS\.DEFAULT\Control Panel\Input Method\Hot Keys”(保存的是默认的快捷键配置)是管有中\英模式切换的。知道这些,我们只要更改对应的键值就好了。

        2.Key Modifiers(修改键):第一位是Ctrl,Alt,Shift三个,Ctrl为02,Alt为01,Shift为04

        3.Virtual Key(虚拟键):设置组合键以外的热键,把第一位设置为对应的16进制数据即可。例如想设置A为热键,其16进制数据为41,则把Virtual Key改成41 00 00 00,更多键值Virtual-Key Codes

        知道这些东西,我们只要把值改成“无”和“Shift”切换输入法就欧克了。这个小工具所要做的就是代替人工去禁用中英切换和设置默认输入法为英语模式。

也可以手动在系统里设置

        易语言中操作注册表就要用到“写注册项 (参数<1>,参数<2> , 参数<3>)这个命令,命令共有三个参数。

        参数<1>的名称为“根目录”,类型为“整数型(int)”。可以为以下常量值之一: 1、#根类; 2、#现行设置; 3、#现行用户; 4、#本地机器; 5、#所有用户。

        参数<2>的名称为“全路径注册项名”,类型为“文本型(text)”。

         参数<3>的名称为“欲写入值”,类型为“通用型(all)”。参数值指定欲写入到指定注册表项中的值,只能为数值、文本或者字节集,否则命令将失败。

        其中一行源码: 写注册项 (#现行用户, “Control Panel\Input Method\Hot Keys\00000010\Key Modifiers”, 到字节集 ({ 0, 0, 0, 0 }))

        因为参数<1>已经声明了根目录所有参数<2>中要去掉根目录在末尾加上所要改数据的名称。比如你要更改根目录A下B文件夹中C的值为D,那么代码这样描述:写注册项 (A, “B\C”, 到字节集 D)。注意参数二要用“”括起来。这里还要注意一个问题,那就是数据类型,在注册表中如果是“REG_SZ”类型参数<3>直接赋值就行,例如<3>=3,但如果是“REG_BINARY”类型需要转换成字节集,“REG_BINARY”类型的值是二进制数值但却用十六进制显示,所有赋值之前要进行进制转换。“REG_BINARY”类型的值在写入的时候就要用{}括起来,因为有四组数据{数据1,数据2,数据3,数据4}。


写入时要看清数据类型

        写入“REG_SZ”类型时参数<3>为字节集数据时那么那个键值会变为“REG_BINARY”,反之参数<3>为一个实数时“REG_BINARY”会变为“REG_SZ”。

        程序编译前进行了简单的挂花乱序,但是电脑管家13.5.20522.233版本依旧可以查杀的到,我开的是全引擎,至于那个引擎查到的也没显示。我屡试不爽的VMP加壳也在网杀下失败,后来不报希望的三年前的吾爱工具包倒是免杀成功。要是不是分享怕你们说我下马我才不会做这个流程,添加白名单多香。其中有四个免杀版本,到时候你都下载下来看看那个能撑住就用那个,我只作了电脑管家的其他的没测试过。不过我制作方法都告诉你们了,我也没必要做个病毒啊。。。。。在次说明下,点击“修改”后你怎么切换输入法都无法输入中文,除非你管理员权限运行之后点“恢复”,这四个版本中好像有一个是自带提权的。

链接:https://pan.baidu.com/s/1mi66R89MTOMKni0ISndmpA

提取码:ztmd

        

你可能感兴趣的:(易语言操作注册表-自制一个小工具以及技术点分享)