operatereg.exe【C++】是一款非常方便笔记本电脑键盘功能禁用脚本,支持开启禁用笔记本键盘,需要右键以管理员身份运行此程序,运行后重新启动计算机!您还在为老是误触而烦恼吗?
之所以写这个程序,是因为宿舍桌子太小。有时把外接键盘叠在笔记本键盘上,容易误触到笔记本键盘,从而导致一些莫名其妙的问题困扰自己。
于是找了些资料了解到了如何禁用笔记本键盘的方法:
+ 禁用设备法。详细教程请点击 [这里](https://jingyan.baidu.com/article/77b8dc7fb9aa336175eab674.html)
+ 修改注册表法。详细教程请点击 [这里](https://www.52pojie.cn/thread-1445700-1-2.html)
可能会有人问:为什么不省事点选用禁用设备法,而是写代码再来操作注册表,来禁用键盘这么麻烦的方法呢?原因很简单,突然对编程语言操作注册表很感兴趣,就这么做了。
注册表结构类似文件目录:分为根键、子键和键值项三部分,与文件目录对应的话就是根目录、子目录和文件。简单介绍一下这三部分:
(1)根键
分为5个:HKEY_CLASSES_ROOT, HKEY_CURRENT_USER,HKEY_LOCAL_MACHINE,HKEY_USERS和HKEY_CURRENT_CONFIG
(2)子键
可以有多个子键和键值项,就像一个目录中可以有多个子目录和多个文件一样。
(3)键值项
**可以理解为文件,它由三部分组成,分别为 :名称、类型、数据。其中类型主要有:
REG_BINARY? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?二进制数据
REG_DWORD? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?32位双字节数据
REG_SZ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???以0结尾的字符串
REG_DWORD_BIG_ENDIAN? ?? ?? ?? ???高位排在底位的双字
REG_EXPAND_SZ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???扩展字符串,可以加入变量如%PATH%
REG_LINK UNICODE? ?? ?? ?? ?? ?? ?? ?? ???符号链接
REG_RESOURCE_LIST? ?? ?? ?? ?? ?? ?? ?? ?设备驱动程序资源列表
REG_MULTI_SZ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???多字符串
注册表数据项的数据类型有8种,最常用的是前3种。
操作注册表的几个API函数
需要头文件:atlbase.h
(1)打开一个键
(2)查询某一个键值
(3)设置一个键值
(4)新建指定键
(5)删除注册表指定键下的值
删除注册表项
RegDeleteKey 也可用来删除一个键值。在 Win 95/98 平台下,也可用来删除整个子键和键值。但是在Windows NT/2000平台下,只能用来删除没有子键的键。
工具需要以管理员方式启动
+由于修改注册表后,需要重启电脑后才能生效。所以代码中加入了询问“是否立刻重启”的语句
#include <iostream>
#include <atlbase.h>
#include <Windows.h>
using namespace std;
void write_dword();
//测试成功,读取到start的当前值//读取操作表,其类型为DWORD
void read_dword(){
HKEY hKEY;//定义有关的键,在查询结束时关闭
//打开与路径data_Set相关的hKEY
char i,x;
LPCTSTR data_set = _T("SYSTEM\\CurrentControlSet\\Services\\i8042prt");
//访问注册表,hKEY则保存此函数所打开的键的句柄
if (ERROR_SUCCESS == ::RegOpenKeyEx(HKEY_LOCAL_MACHINE, data_set, 0, KEY_READ, &hKEY)){
DWORD dwValue;//长整型数据,如果是字符串数据用char数组
DWORD dwSize = sizeof(DWORD);
DWORD dwType = REG_DWORD;
if (::RegQueryValueEx(hKEY, _T("Start"), 0, &dwType, (LPBYTE)&dwValue, &dwSize) != ERROR_SUCCESS)
cout << "错误:无法查询有关的注册表信息" << endl;
switch (dwValue){
case 3:
cout << "当前笔记本键盘状态为:启用 " << "(" << hex << dwValue << ")" << endl << endl << "若需要禁用请输入字母:y或Y" << endl;
cin >> i;
if (i == 'y'(专业提供视频软件下载)
……
operatereg.exe【C++】-operatereg.exe【C++】下载 v免费绿色版 >>本地高速下载
>>本地下载