下载站

展开
精品推荐
operatereg.exe【C++】

operatereg.exe【C++】

鼠标键盘大小:68.1MB语言: / 类别:系统工具系统: / WinAll 提供:
应用介绍

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_LINKUNICODE??????????????????符号链接REG_RESOURCE_LIST????????????????设备驱动程序资源列表REG_MULTI_SZ????????????????????????多字符串注册表数据项的数据类型有8种,最常用的是前3种。

操作注册表的几个API函数

需要头文件:atlbase.h

(1)打开一个键

禁用笔记本自带键盘快捷键,笔记本设置,禁用笔记本键盘命令.

(2)查询某一个键值

禁用笔记本自带键盘快捷键,笔记本设置,禁用笔记本键盘命令.

(3)设置一个键值

禁用笔记本自带键盘快捷键,笔记本设置,禁用笔记本键盘命令.

(4)新建指定键

禁用笔记本自带键盘快捷键,笔记本设置,禁用笔记本键盘命令.

(5)删除注册表指定键下的值

禁用笔记本自带键盘快捷键,笔记本设置,禁用笔记本键盘命令.

删除注册表项

禁用笔记本自带键盘快捷键,笔记本设置,禁用笔记本键盘命令.

RegDeleteKey也可用来删除一个键值。在Win95/98平台下,也可用来删除整个子键和键值。但是在WindowsNT/2000平台下,只能用来删除没有子键的键。

使用说明

工具需要以管理员方式启动

禁用笔记本自带键盘快捷键,笔记本设置,禁用笔记本键盘命令.

特别声明

+由于修改注册表后,需要重启电脑后才能生效。所以代码中加入了询问“是否立刻重启”的语句

源码说明

#include<iostream

#include<atlbase.h

#include<Windows.h

usingnamespacestd;

voidwrite_dword();

//测试成功,读取到start的当前值//读取操作表,其类型为DWORD

voidread_dword(){

HKEYhKEY;//定义有关的键,在查询结束时关闭

//打开与路径data_Set相关的hKEY

chari,x;

LPCTSTRdata_set=_T("SYSTEM\\CurrentControlSet\\Services\\i8042prt");

//访问注册表,hKEY则保存此函数所打开的键的句柄

if(ERROR_SUCCESS==::RegOpenKeyEx(HKEY_LOCAL_MACHINE,data_set,0,KEY_READ,&hKEY)){

DWORDdwValue;//长整型数据,如果是字符串数据用char数组

DWORDdwSize=sizeof(DWORD);

DWORDdwType=REG_DWORD;

if(::RegQueryValueEx(hKEY,_T("Start"),0,&dwType,(LPBYTE)&dwValue,&dwSize)!=ERROR_SUCCESS)

cout<<"错误:无法查询有关的注册表信息"<<endl;

switch(dwValue){

case3:

cout<<"当前笔记本键盘状态为:启用"<<"("<<hex<<dwValue<<")"<<endl<<endl<<"若需要禁用请输入字母:y或Y"<<endl;

cini;

if(i=='y'||i=='Y'){

write_dword();

}

break;

case4:

cout<<"当前笔记本键盘状态为:禁用"<<"("<<hex<<dwValue<<")"<<endl<<endl<<"若需要启用请输入字母:y或Y"<<endl;

cinx;

if(x=='y'||x=='Y'){

write_dword();

}

break;

default:

cout<<"当前笔记本键盘状态获取未知"<<"("<<hex<<dwValue<<")"<<endl<<endl;

break;

}

}

::RegCloseKey(hKEY);

}

//测试成功,读取到start设备名displayname//读取操作表,其类型为REG_SZ

voidread_reg_sz(){

HKEYhkey;

LPCTSTRdata_set=_T("SYSTEM\\CurrentControlSet\\Services\\i8042prt");

if(ERROR_SUCCESS==::RegOpenKeyEx(HKEY_LOCAL_MACHINE,data_set,0,KEY_READ,&hkey)){

chardwValue;

DWORDdwSzType=REG_SZ;

DWORDdwSize=sizeof(dwValue);

if(::RegQueryValueEx(hkey,_T("DisplayName"),0,&dwSzType,(LPBYTE)&dwValue,&dwSize)!=ERROR_SUCCESS){

cout<<"无法查询有关的注册表信息"<<endl<<endl;

}

cout<<"当前设备名:"<<dwValue<<endl<<endl;

}

::RegCloseKey(hkey);

}

//测试成功,更改(创建)到start键值//在SYSTEM\CurrentControlSet\Services\i8042prt文件夹下读取Start的子键,设置其值为dwValue

voidwrite_dword(){

HKEYhkey;//定义有关的hkey,在查询结束时要关闭

HKEYhTempKey;

charans;

intflag;

DWORDdwValue;

DWORDdwSize=sizeof(DWORD);

DWORDdwType=REG_DWORD;

LPCTSTRdata_set=_T("SYSTEM\\CurrentControlSet\\Services\\i8042prt");

cout<<"请设置当前笔记本键盘状态,输入数字:3,表示开启键盘;输入数字4,表示禁用键盘;"<<endl;

cinflag;

switch(flag){

case3:

dwValue=flag;break;

case4:

dwValue=flag;break;

default:

cout<<"状态值输入错误"<<endl;break;

}

if(ERROR_SUCCESS==RegOpenKeyEx(HKEY_LOCAL_MACHINE,data_set,0,KEY_SET_VALUE,&hkey)){

//if(ERROR_SUCCESS==::RegCreateKey(hkey,_T("解开该段落注释,则可更改为:在SYSTEM\\CurrentControlSet\\Services\\i8042prt下,创建以'该文本内容'为名称的子健,并创建一个名为“Start”的子健,其值为:dwValue"),&hTempKey)){

if(ERROR_SUCCESS!=::RegSetValueEx(hkey,_T("Start"),0,REG_DWORD,(CONSTBYTE*)&dwValue,sizeof(DWORD))){

cout<<"写入注册表失败"<<endl;

}

cout<<"修改成功!"<<endl<<"是否立刻重启电脑,使设置立即生效?"<<endl<<"输入y或Y,以立刻重新启动电脑;输入n或N退出程序"<<endl;

cinans;

if(ans=='y'||ans=='Y'){

cout<<"再次确认,要立刻重启电脑吗?\n\n输入y或Y,以立刻重新启动电脑;输入n或N退出程序"<<endl;

cinans;

if(ans=='y'||ans=='Y')

system("shutdown-r-t0");

}

else

exit(1);

//}

}

::RegCloseKey(hkey);

}

//测试成功,更改(创建)子键test111及其键值项Name到start键值

voidwrite_binary(){

HKEYhkey;

HKEYhTempKey;

BYTEm_name;

memset(m_name,0,sizeof(m_name));

m_name=0xff;

m_name=0xac;

m_name=0x05;

m_name=0x4e;

LPCTSTRdata_set=_T("SYSTEM\\CurrentControlSet\\Services\\i8042prt");

if(ERROR_SUCCESS==::RegOpenKeyEx(HKEY_LOCAL_MACHINE,data_set,0,KEY_SET_VALUE,&hkey)){

if(ERROR_SUCCESS==::RegCreateKey(hkey,_T("test111"),&hTempKey)){

if(ERROR_SUCCESS!=::RegSetValueEx(hTempKey,_T("Name"),0,REG_BINARY,(unsignedchar*)m_name,5)){

cout<<"写入错误"<<endl;

}

}

}

::RegCloseKey(hkey);

}

//测试成功,更改(创建)子键test111及其键值项Name到start键值

voidwrite_reg_sz(){

HKEYhkey;

HKEYhTempKey;

charm_name_set="China";

DWORDlen=strlen(m_name_set)+1;

LPCTSTRdata_set=_T("SYSTEM\\CurrentControlSet\\Services\\i8042prt");

if(ERROR_SUCCESS==::RegOpenKeyEx(HKEY_LOCAL_MACHINE,data_set,0,KEY_SET_VALUE,&hkey)){

if(ERROR_SUCCESS==::RegCreateKey(hkey,_T("test111"),&hTempKey)){

if(ERROR_SUCCESS!=::RegSetValueEx(hTempKey,_T("Name"),0,REG_SZ,(constBYTE*)m_name_set,len)){

cout<<"写入错误"<<endl;

}

}

}

::RegCloseKey(hkey);

}

//测试成功,将键值项Name删除

voiddelete_value()

{

HKEYhkey;

LPCTSTRdata_set=_T("SYSTEM\\CurrentControlSet\\Services\\i8042prt\\test111");

if(ERROR_SUCCESS==::RegOpenKeyEx(HKEY_LOCAL_MACHINE,data_set,0,KEY_SET_VALUE,&hkey))

{

if(ERROR_SUCCESS!=::RegDeleteValue(hkey,_T("Name")))

{

cout<<"删除错误"<<endl;

}

}

::RegCloseKey(hkey);

}

//测试成功,将子键test111删除

voiddelete_key(){

HKEYhkey;

LPCTSTRdata_set=_T("SYSTEM\\CurrentControlSet\\Services\\i8042prt");

if(ERROR_SUCCESS==::RegOpenKeyEx(HKEY_LOCAL_MACHINE,data_set,0,KEY_SET_VALUE,&hkey)){

if(ERROR_SUCCESS!=::RegDeleteKey(hkey,"test111")){

cout<<"删除错误"<<endl;

}

}

::RegCloseKey(hkey);

}

voidmenu(){

cout<<"欢迎使用本工具"<<endl<<endl;

read_reg_sz();

cout<<endl<<"已为您查询到该笔记本当前键盘状态为:";

read_dword();

}

intmain(){

menu();

system("pause");

return0;

}

禁用笔记本自带键盘快捷键,笔记本设置,禁用笔记本键盘命令.

Tags:禁用笔记本自带键盘快捷键,笔记本设置,禁用笔记本键盘命令.

应用推荐查看更多
热门下载查看更多
精选应用
点击查看更多
专题合集查看更多
热门专题查看更多
友情链接0投诉联系:ichaoinc@gmail.com