前沿拓展:
如何進(jìn)入注冊(cè)表
“故形短活吸找年在windows200對(duì)銷沖臺(tái)愛勞階親0或以下版本,開始--運(yùn)行--regedit--回車 ,就OK了!
在windowsXP里開始--運(yùn)行--regedit--回車進(jìn)1擊臉告隨顯6位注冊(cè)表編輯器,開始--運(yùn)行--regedit32--回車進(jìn)32位注冊(cè)表編輯器,許多在16位注冊(cè)表編輯器不能編輯的重要東東,就必須進(jìn)32位注冊(cè)表編輯器!
強(qiáng)烈建議你在進(jìn)行注冊(cè)表編輯前,給注冊(cè)表備份!“”
Windows程序開機(jī)啟動(dòng)的方式有很多,但是通過注冊(cè)表啟動(dòng)應(yīng)該是最簡(jiǎn)單的方式了。
注冊(cè)表
注冊(cè)表(Registry,繁體中文版Windows**作系統(tǒng)稱之為登錄檔)是Microsoft Windows中的一個(gè)重要的數(shù)據(jù)庫(kù),用于存儲(chǔ)系統(tǒng)和應(yīng)用程序的設(shè)置信息。早在Windows 3.0推出OLE技術(shù)的時(shí)候,注冊(cè)表就已經(jīng)出現(xiàn)。隨后推出的Windows NT是第一個(gè)從系統(tǒng)級(jí)別廣泛使用注冊(cè)表的**作系統(tǒng)。但是,從Microsoft Windows 95**作系統(tǒng)開始,注冊(cè)表才真正成為Windows用戶經(jīng)常接觸的內(nèi)容,并在其后的**作系統(tǒng)中繼續(xù)沿用至今。
打開注冊(cè)表
打開方式很多,個(gè)人習(xí)慣用搜索方式打開,用cmd也很方便。
注冊(cè)表的數(shù)據(jù)結(jié)構(gòu)
注冊(cè)表由RegCreateKey創(chuàng)建一個(gè)KEY,并返回相應(yīng)的HKEYRegOpenKey打開注冊(cè)表,得到一個(gè)HKEY,用來作為下面這些函數(shù)的第一個(gè)參數(shù)。RegOpenKeyEx同RegOpenKey類似,一般很少用,增加了一個(gè)訪問控制類型參數(shù)。RegSetValue設(shè)置一個(gè)HKEY的默認(rèn)值RegSetValueEx設(shè)置一個(gè)HKEY除默認(rèn)值以外其它的值RegQueryValue獲取一個(gè)HKEY的默認(rèn)值RegQueryValueEx獲取一個(gè)HKEY除默認(rèn)值以外其它的值RegDeleteKey刪除一個(gè)KEY,此KEY不能包含子KEYSHDeleteKey刪除一個(gè)KEY以及所有子KEYRegDeleteValue刪除KEY里面的值RegCloseKey關(guān)閉注冊(cè)表
開機(jī)啟動(dòng)Windows通過注冊(cè)表設(shè)置開機(jī)啟動(dòng)
在注冊(cè)表中**到“計(jì)算機(jī)HKEYLOCALMACHINESOFTWAREMicrosoftWindowsCurrentVersionRun",可以看出VBoxTRay會(huì)在開機(jī)時(shí)候啟動(dòng)。
查看進(jìn)程如下:
如果想要僅下一次開機(jī)運(yùn)行,之后都不再運(yùn)行可以在“計(jì)算機(jī)HKEYLOCALMACHINESOFTWAREMicrosoftWindowsCurrentVersionRunOnce”中**作。
開機(jī)啟動(dòng)源代碼
下面的代碼通過開機(jī)自啟動(dòng)execel和本應(yīng)用程序,使用的方式是在鍵"HKEYLOCALMACHINESOFTWAREMicrosoftWindowsCurrentVersionRun"寫值。同時(shí),還有注冊(cè)表常用的一些**作。
#include <Windows.h>#include <iostream>using namespace std;int WriteReg(char* path, char* key, char* value);/************************************@ Brief: 開機(jī)啟動(dòng)@ Author: 無情劍客@ Created: 2020/08/25 傳統(tǒng)節(jié)日七夕@ Return:************************************/void autostart(){ //1. 開啟啟動(dòng)execel WriteReg("SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "execel", "C:\Program Files (x86)\Office 2007\Office12\EXCEL.exe"); //2、得到本程序自身的全路徑 TCHAR strExeFullDir[MAX_PATH]; GetModuleFileName(NULL, strExeFullDir, MAX_PATH); //3. 開機(jī)啟動(dòng)當(dāng)前程序 WriteReg("SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "Register", strExeFullDir);}/************************************@ Brief: 打開注冊(cè)表,讀取Key對(duì)應(yīng)value@ Author: 無情劍客@ Created: 2020/08/25 傳統(tǒng)節(jié)日七夕@ Return:************************************/int ReadReg(char* path, char* key, char* value){ HKEY hKey; int ret = RegOpenKeyEx(HKEY_CURRENT_USER, path, 0, KEY_EXECUTE, &hKey); if (ret != ERROR_SUCCESS) { cout << "打開注冊(cè)表失敗" << endl; return 1; } //讀取KEY DWORD dwType = REG_SZ; //數(shù)據(jù)類型 DWORD cbData = 256; ret = RegQueryValueEx(hKey, key, NULL, &dwType, (LPBYTE)value, &cbData); if (ret == ERROR_SUCCESS) { cout << value << endl; } else { cout << "讀取注冊(cè)表中KEY 失敗" << endl; RegCloseKey(hKey); return 1; } RegCloseKey(hKey); return 0;}/************************************@ Brief: 寫注冊(cè)表,如不存在自動(dòng)創(chuàng)建@ Author: 無情劍客@ Created: 2020/08/25 傳統(tǒng)節(jié)日七夕@ Return:************************************/int WriteReg(char* path, char* key, char* value){ HKEY hKey; DWORD dwDisp; DWORD dwType = REG_SZ; //數(shù)據(jù)類型 int ret = RegCreateKeyEx(HKEY_CURRENT_USER, path,0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, &dwDisp); if (ret != ERROR_SUCCESS) { cout << "創(chuàng)建注冊(cè)表失敗" << endl; return 1; } ret == RegSetValueEx(hKey, key, 0, dwType, (BYTE*)value, strlen(value)); if (ret != ERROR_SUCCESS) { cout << "注冊(cè)表中創(chuàng)建KEY VALUE失敗" << endl; RegCloseKey(hKey); return 1; } RegCloseKey(hKey); return 0;}/************************************@ Brief: 刪除注冊(cè)表@ Author: 無情劍客@ Created: 2020/08/25 傳統(tǒng)節(jié)日七夕@ Return:************************************/int DelReg(char* path){ int ret = RegDeleteKey(HKEY_CURRENT_USER, path); if (ret == ERROR_SUCCESS) { cout << "刪除成功" << endl; } else { cout << "刪除失敗" << endl; return 1; } return 0;}int main(int argc, char * argv[]){ char value[32] = {0}; autostart(); WriteReg("Software\burning", "微信**", "無情劍客"); ReadReg("Software\burning", "微信**", value); // C++ 程序暫停,等待用戶輸入回車后再繼續(xù)執(zhí)行 cin.get(); return 0;}
運(yùn)行結(jié)果如下,當(dāng)開機(jī)之后,Register程序和execl的都啟動(dòng)起來了。
寫在最后
注冊(cè)表之強(qiáng)大超出想象。玩過Dota的都知道Win7之后,游戲不能全屏,其實(shí)游戲畫面的分辨率就是在注冊(cè)表中設(shè)置的,因此可以通過注冊(cè)表來實(shí)現(xiàn)全屏,文件關(guān)聯(lián)設(shè)置也可以通過注冊(cè)表來實(shí)現(xiàn),Windows的用戶帳號(hào)密碼也都在注冊(cè)表中有記錄,當(dāng)然密碼是散列的,還有很多強(qiáng)大的功能。。。
注冊(cè)表設(shè)置開機(jī)啟動(dòng),很容易被檢測(cè)出來,但是如果把進(jìn)程隱藏起來,甚至于注冊(cè)表文件隱藏起來,那就不是很容易檢測(cè)了。
**
更多內(nèi)容,歡迎關(guān)注我微信**:無情劍客。
拓展知識(shí):
原創(chuàng)文章,作者:九賢生活小編,如若轉(zhuǎn)載,請(qǐng)注明出處:http://xiesong.cn/39281.html