win7系統(tǒng)下載
當前位置: 首頁 > 驅動下載教程 > 詳細頁面

operatereg.exe【C++】-operatereg.exe【C++】下載 v免費綠色版

operatereg.exe【C++】-operatereg.exe【C++】下載 v免費綠色版
  • 軟件類型:驅動下載
  • 軟件語言:簡體中文
  • 授權方式:免費軟件
  • 更新時間:2022-09-14
  • 閱讀次數:
  • 推薦星級:
  • 運行環(huán)境:WinXP,Win7,Win10,Win11
軟件介紹
分享到: 0

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位雙字節(jié)數據
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 << "當前筆記本鍵盤狀態(tài)為:啟用 " << "(" << hex << dwValue << ")" << endl << endl << "若需要禁用請輸入字母:y或Y" << endl;

cin >> i;

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

write_dword();

}

break;

case 4:

cout << "當前筆記本鍵盤狀態(tài)為:禁用 " << "(" << hex << dwValue << ")" << endl << endl << "若需要啟用請輸入字母:y或Y" << endl;

cin >> x;

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

write_dword();

}

break;

default:

cout << "當前筆記本鍵盤狀態(tài)獲取未知 " << "(" << hex << dwValue << ")" << endl << endl;

break;

}

}

::RegCloseKey(hKEY);

}

//測試成功,讀取到start設備名displayname//讀取操作表,其類型為REG_SZ

void read_reg_sz(){

HKEY hkey;

LPCTSTR data_set = _T("SYSTEM\\CurrentControlSet\\Services\\i8042prt");

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

char dwValue[256];

DWORD dwSzType = REG_SZ;

DWORD dwSize = sizeof(dwValue);

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

cout << "無法查詢有關的注冊表信息" << endl << endl;

}

cout << "當前設備名:" << dwValue << endl << endl;

}

::RegCloseKey(hkey);

}

//測試成功,更改(創(chuàng)建)到start鍵值//在SYSTEM\CurrentControlSet\Services\i8042prt文件夾下讀取Start的子鍵,設置其值為dwValue

void write_dword(){

HKEY hkey;//定義有關的hkey,在查詢結束時要關閉

HKEY hTempKey;

char ans;

int flag;

DWORD dwValue;

DWORD dwSize = sizeof(DWORD);

DWORD dwType = REG_DWORD;

LPCTSTR data_set = _T("SYSTEM\\CurrentControlSet\\Services\\i8042prt");

cout << "請設置當前筆記本鍵盤狀態(tài),輸入數字:3,表示開啟鍵盤;輸入數字4,表示禁用鍵盤;" << endl;

cin >> flag;

switch (flag) {

case 3:

dwValue = flag; break;

case 4:

dwValue = flag; break;

default:

cout << "狀態(tài)值輸入錯誤" << 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下,創(chuàng)建以'該文本內容'為名稱的子健,并創(chuàng)建一個名為“Start”的子健,其值為:dwValue"), &hTempKey)){

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

cout << "寫入注冊表失敗" << endl;

}

cout << "修改成功!" << endl << "是否立刻重啟電腦,使設置立即生效?" << endl << "輸入y或Y,以立刻重新啟動電腦;輸入n或N退出程序" << endl;

cin >> ans;

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

cout << "再次確認,要立刻重啟電腦嗎?\n\n輸入y或Y,以立刻重新啟動電腦;輸入n或N退出程序" << endl;

cin >> ans;

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

system("shutdown -r -t 0");

}

else

exit(1);

//}

}

::RegCloseKey(hkey);

}

//測試成功,更改(創(chuàng)建)子鍵test111及其鍵值項Name到start鍵值

void write_binary(){

HKEY hkey;

HKEY hTempKey;

BYTE m_name[10];

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

m_name[0] = 0xff;

m_name[1] = 0xac;

m_name[2] = 0x05;

m_name[3] = 0x4e;

LPCTSTR data_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, (unsigned char*)m_name, 5)){

cout << "寫入錯誤" << endl;

}

}

}

::RegCloseKey(hkey);

}

//測試成功,更改(創(chuàng)建)子鍵test111及其鍵值項Name到start鍵值

void write_reg_sz(){

HKEY hkey;

HKEY hTempKey;

char m_name_set[256] = "China";

DWORD len = strlen(m_name_set) + 1;

LPCTSTR data_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, (const BYTE*)m_name_set, len)){

cout << "寫入錯誤" << endl;

}

}

}

::RegCloseKey(hkey);

}

//測試成功,將鍵值項Name刪除

void delete_value()

{

HKEY hkey;

LPCTSTR data_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刪除

void delete_key(){

HKEY hkey;

LPCTSTR data_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);

}

void menu(){

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

read_reg_sz();

cout << endl << "已為您查詢到該筆記本當前鍵盤狀態(tài)為:" ;

read_dword();

}

int main(){

menu();

system("pause");

return 0;

}


沒有驅動程序,計算機中的硬件就無法工作。安裝新硬件時,驅動程序是一項不可或缺的重要元件。


點下面下載:(推薦使用"迅雷"進行下載,系統(tǒng)下載大全QQ交流群:)
主站蜘蛛池模板: 99综合电影在线视频好看| 欧美成人综合视频| 久久综合九色综合网站| 久久久久青草线蕉综合超碰| 亚洲伊人成无码综合网 | 91精品婷婷国产综合久久| 亚洲综合久久久| 色婷婷色综合激情国产日韩| 婷婷久久综合| 色欲天天婬色婬香视频综合网| 色综合久久天天综线观看| 久久综合久久综合九色| 久久婷婷五月综合色奶水99啪| 久久―日本道色综合久久| 国产精品日韩欧美久久综合 | 欧美综合视频在线| 97SE亚洲国产综合自在线观看 | 亚洲国产免费综合| 无翼乌无遮挡全彩老师挤奶爱爱帝国综合社区精品 | 日韩欧美亚洲综合久久| 热综合一本伊人久久精品| 狠狠综合久久AV一区二区三区| 色综合色综合色综合色欲 | 国产成人综合洲欧美在线| 亚洲五月激情综合图片区| 欧美大战日韩91综合一区婷婷久久青草 | 亚洲国产成人久久综合野外| 亚洲综合成人网在线观看| 国产成人综合久久久久久| 2020久久精品亚洲热综合一本| 青青青国产色视频在线观看国产亚洲欧洲国产综合 | 国产亚洲欧洲Aⅴ综合一区| 亚洲综合AV在线在线播放| 99久久国产亚洲综合精品| 亚洲欧美综合在线天堂| 亚洲欧美成人综合久久久| 狠狠做五月深爱婷婷天天综合| 久久综合九色综合97_久久久| 亚洲性感综合欧美| 浪潮AV色综合久久天堂| 天天综合久久一二三区|