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