成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

網(wǎng)絡(luò)安全編程:注冊(cè)表下啟動(dòng)項(xiàng)的管理

安全
下面通過(guò)編寫一個(gè)枚舉注冊(cè)表啟動(dòng)項(xiàng)的工具,進(jìn)一步學(xué)習(xí)注冊(cè)表操作時(shí)使用API函數(shù)的相關(guān)流程。

 [[382093]]

對(duì)于Windows操作系統(tǒng)來(lái)說(shuō),注冊(cè)表中保存了非常多的系統(tǒng)配置,例如常見(jiàn)的IE主頁(yè)保存在HKEY_LOCAL_MACHINE\Software\Mircosoft\Internet Explorer\Main下的Start Page中;再比如禁止磁盤驅(qū)動(dòng)器自動(dòng)運(yùn)行的AutoRun功能在注冊(cè)表的HKEY_CURRENT_ USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer下的NoDriveTypeAutoRun中進(jìn)行設(shè)置;還有映像劫持、文件關(guān)聯(lián)等很多系統(tǒng)配置,都可以在注冊(cè)表中直接進(jìn)行配置。

有很多常見(jiàn)的安全工具都需要對(duì)注冊(cè)表進(jìn)行操作,這里介紹通過(guò)注冊(cè)表獲得隨Windows系統(tǒng)啟動(dòng)時(shí)的啟動(dòng)項(xiàng)。在注冊(cè)表的啟動(dòng)項(xiàng)中,除了正常的系統(tǒng)工具、軟件工具外,病毒和木馬也會(huì)利用注冊(cè)表的啟動(dòng)項(xiàng)悄然地讓自己跟隨Windows的啟動(dòng)而啟動(dòng),從而實(shí)現(xiàn)自啟動(dòng)的功能。下面通過(guò)編寫一個(gè)枚舉注冊(cè)表啟動(dòng)項(xiàng)的工具,進(jìn)一步學(xué)習(xí)注冊(cè)表操作時(shí)使用API函數(shù)的相關(guān)流程。

1. 程序的界面及相關(guān)代碼

注冊(cè)表中可以用來(lái)完成開(kāi)機(jī)啟動(dòng)的地方非常多,這里只介紹注冊(cè)表中眾多可以完成開(kāi)機(jī)啟動(dòng)的其中一個(gè)位置。這里的程序使用對(duì)話框的形式,其界面如圖1所示。

圖1  注冊(cè)表啟動(dòng)項(xiàng)管理界面

這個(gè)界面中用到了CListCtrl控件,用戶對(duì)其進(jìn)行添加并進(jìn)行相應(yīng)的設(shè)置即可。這里給出一個(gè)關(guān)于CListCtrl初始化的代碼,具體如下: 

  1. VOID CManageRunDlg::InitRunList()  
  2.  
  3.   // 設(shè)置擴(kuò)展樣式  
  4.   m_RunList.SetExtendedStyle(  
  5.     m_RunList.GetExtendedStyle()  
  6.     | LVS_EX_GRIDLINES // 有網(wǎng)格  
  7.     | LVS_EX_FULLROWSELECT); // 選擇單行  
  8.   // 在 ListCtrl 中插入新列  
  9.   m_RunList.InsertColumn(0, "NO.");  
  10.   m_RunList.InsertColumn(1, "鍵值名稱");  
  11.   m_RunList.InsertColumn(2, "鍵 值");  
  12.   /*  
  13.   LVSCW_AUTOSIZE_USEHEADER:  
  14.   列的寬度自動(dòng)匹配為標(biāo)題文本  
  15.   如果這個(gè)值用在最后一列,列寬被設(shè)置為 ListCtrl 剩余的長(zhǎng)度  
  16.   */  
  17.   m_RunList.SetColumnWidth(0, LVSCW_AUTOSIZE_USEHEADER); 
  18.   m_RunList.SetColumnWidth(1, LVSCW_AUTOSIZE_USEHEADER);  
  19.   m_RunList.SetColumnWidth(2, LVSCW_AUTOSIZE_USEHEADER);  

2. 啟動(dòng)項(xiàng)的枚舉

這個(gè)實(shí)例主要是通過(guò)枚舉注冊(cè)表中的“HKEY_LOCAL_MACHINE\Software\Microso ft\Windows\CurrentVersion\Run”子鍵下的鍵值項(xiàng),取得跟隨Windows啟動(dòng)而啟動(dòng)的程序。在運(yùn)行軟件“注冊(cè)表啟動(dòng)項(xiàng)管理”后,應(yīng)該將上述注冊(cè)表子鍵位置下的所有啟動(dòng)項(xiàng)的內(nèi)容顯示出來(lái),其代碼如下: 

  1. #define REG_RUN "Software\\Microsoft\\Windows\\CurrentVersion\\Run\\"  
  2. VOID CManageRunDlg::ShowRunList()  
  3.  
  4.   // 清空 ListCtrl 中的所有項(xiàng)  
  5.   m_RunList.DeleteAllItems();  
  6.   DWORD dwType = 0 
  7.   DWORD dwBufferSize = MAXBYTE 
  8.   DWORD dwKeySize = MAXBYTE 
  9.   char szValueName[MAXBYTE] = { 0 };  
  10.   char szValueKey[MAXBYTE] = { 0 };  
  11.   HKEY hKey = NULL 
  12.   LONG lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE,  
  13.   REG_RUN, 0, KEY_ALL_ACCESS, &hKey); 
  14.   if ( lRet != ERROR_SUCCESS ) 
  15.   {  
  16.     return ;  
  17.   }  
  18.   int i = 0 
  19.   CString strTmp;  
  20.   while ( TRUE )  
  21.   {  
  22.     // 枚舉鍵項(xiàng)  
  23.     lRet = RegEnumValue(hKey, i, szValueName,  
  24.     &dwBufferSize, NULL, &dwType,  
  25.     (unsigned char *)szValueKey, &dwKeySize);  
  26.     // 沒(méi)有則退出循環(huán)  
  27.     if ( lRet == ERROR_NO_MORE_ITEMS )  
  28.     {  
  29.       break;  
  30.     }  
  31.     // 顯示到列表控件中  
  32.     strTmp.Format("%d", i);  
  33.     m_RunList.InsertItem(i, strTmp);  
  34.     m_RunList.SetItemText(i, 1, szValueName);  
  35.     m_RunList.SetItemText(i, 2, szValueKey);  
  36.     ZeroMemory(szValueKey, MAXBYTE);  
  37.     ZeroMemory(szValueName, MAXBYTE);  
  38.     dwBufferSize = MAXBYTE 
  39.     dwKeySize = MAXBYTE 
  40.     i ++;  
  41.   }  
  42.   RegCloseKey(hKey);  

當(dāng)將注冊(cè)表中的自啟動(dòng)項(xiàng)顯示出來(lái)后,必然會(huì)對(duì)其進(jìn)行一定的操作或處理。對(duì)于注冊(cè)表啟動(dòng)項(xiàng)的管理來(lái)說(shuō),常見(jiàn)的有3個(gè)功能,首先是屏蔽啟動(dòng)項(xiàng),然后是刪除啟動(dòng)項(xiàng),最后是添加啟動(dòng)項(xiàng)(這三者是并列關(guān)系,不是先后順序)。這里的程序中只完成后兩個(gè)功能,即刪除啟動(dòng)項(xiàng)和添加啟動(dòng)項(xiàng)。刪除啟動(dòng)項(xiàng)和屏蔽啟動(dòng)項(xiàng)是有差別的,其差別在于屏蔽啟動(dòng)項(xiàng)是可恢復(fù)的,而刪除啟動(dòng)項(xiàng)是不可恢復(fù)的,至于屏蔽啟動(dòng)項(xiàng)這個(gè)功能就留給大家實(shí)現(xiàn)了。

3. 添加啟動(dòng)項(xiàng)的代碼

只要將需要跟隨Windows啟動(dòng)的軟件添加至“HKEY_LOCAL_MACHINE\Software\Micro soft\Windows\CurrentVersion\Run”子鍵下,就可以實(shí)現(xiàn)所需的功能,代碼如下: 

  1. void CManageRunDlg::OnBtnAdd()  
  2.  
  3.   // TODO: Add your control notification handler code here  
  4.   CRegAdd RegAdd;  
  5.   RegAdd.DoModal();  
  6.   // 判斷輸入是否完整  
  7.   if ( strlen(RegAdd.m_szKeyName) > 0 &&  
  8.     strlen(RegAdd.m_szKeyValue) > 0)  
  9.   {  
  10.     HKEY hKey = NULL 
  11.     LONG lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE,  
  12.       REG_RUN, 0, KEY_ALL_ACCESS, &hKey);  
  13.     if ( lRet != ERROR_SUCCESS )  
  14.     {  
  15.       return ;  
  16.     }  
  17.     RegSetValueEx(hKey, RegAdd.m_szKeyName, 0,  
  18.       REG_SZ, (const unsigned char*)RegAdd.m_szKeyValue,  
  19.       strlen(RegAdd.m_szKeyValue) + sizeof(char));  
  20.     RegCloseKey(hKey);  
  21.     ShowRunList();  
  22.   }  
  23.   else  
  24.   {  
  25.     AfxMessageBox("請(qǐng)輸入完整的內(nèi)容");  
  26.   }  

在代碼中,CRegAdd對(duì)應(yīng)著添加啟動(dòng)項(xiàng)的窗口,該窗口的代碼如下: 

  1. void CRegAdd::OnBtnOk()  
  2.  
  3.   // TODO: Add your control notification handler code here  
  4.   ZeroMemory(m_szKeyName, MAXBYTE);  
  5.   ZeroMemory(m_szKeyValue, MAX_PATH);  
  6.   GetDlgItemText(IDC_EDIT_KEYNAME, m_szKeyName, MAXBYTE);  
  7.   GetDlgItemText(IDC_EDIT_KEYVALUE, m_szKeyValue, MAX_PATH); 
  8.   EndDialog(0);  

4. 刪除啟動(dòng)項(xiàng)的代碼

刪除啟動(dòng)項(xiàng)的實(shí)現(xiàn)代碼比添加啟動(dòng)項(xiàng)的代碼要簡(jiǎn)單,但是在刪除的時(shí)候涉及一個(gè)關(guān)于CListCtrl控件的編程,也就是選中列表框中的哪個(gè)啟動(dòng)項(xiàng)要進(jìn)行刪除。這是一個(gè)對(duì)控件進(jìn)行編程的問(wèn)題,在代碼中獲取選中的啟動(dòng)項(xiàng)后,要進(jìn)行刪除就非常簡(jiǎn)單了,代碼如下: 

  1. void CManageRunDlg::OnBtnDel()  
  2.  
  3.   // TODO: Add your control notification handler code here  
  4.   POSITION pos = m_RunList.GetFirstSelectedItemPosition();  
  5.   int nSelected = -1;  
  6.   while ( pos )  
  7.   {  
  8.     nSelected = m_RunList.GetNextSelectedItem(pos);  
  9.   }  
  10.   if ( -1 == nSelected )  
  11.   {  
  12.     AfxMessageBox("請(qǐng)選擇要?jiǎng)h除的啟動(dòng)項(xiàng)");  
  13.     return ;  
  14.   }  
  15.   char szKeyName[MAXBYTE] = { 0 };  
  16.   m_RunList.GetItemText(nSelected, 1, szKeyName, MAXBYTE);  
  17.   HKEY hKey = NULL 
  18.   LONG lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE,  
  19.     REG_RUN, 0, KEY_ALL_ACCESS, &hKey);  
  20.   RegDeleteValue(hKey, szKeyName);  
  21.   RegCloseKey(hKey);  
  22.   ShowRunList();  

對(duì)于注冊(cè)表啟動(dòng)項(xiàng)的管理軟件就編寫到這里,大家可以將其他的可以讓軟件開(kāi)機(jī)啟動(dòng)的注冊(cè)表子鍵添加到軟件中去,這樣啟動(dòng)項(xiàng)管理軟件就更加強(qiáng)大、更加完美了。但是,當(dāng)不斷深入對(duì)注冊(cè)表的了解時(shí),會(huì)發(fā)現(xiàn)更多的可以讓軟件隨機(jī)啟動(dòng)的子鍵,這樣就需要每次將新發(fā)現(xiàn)的子鍵添加到代碼中,而每次改動(dòng)代碼是非常繁瑣的。那么,有沒(méi)有什么好的方法可以在每次添加子鍵的同時(shí)不改變代碼本身呢?可以把要枚舉的注冊(cè)表子鍵保存到一個(gè)文件中,然后讓程序去該文件中讀取這些子鍵,最后通過(guò)API函數(shù)對(duì)注冊(cè)表進(jìn)行枚舉。這樣,以后每當(dāng)在注冊(cè)表中有新的需要枚舉的內(nèi)容時(shí),只需要修改保存注冊(cè)表子鍵的文件即可,而不需要對(duì)程序本身進(jìn)行修改了。 

 

責(zé)任編輯:龐桂玉 來(lái)源: 計(jì)算機(jī)與網(wǎng)絡(luò)安全
相關(guān)推薦

2021-02-15 15:23:03

網(wǎng)絡(luò)安全注冊(cè)表API

2021-05-14 12:10:19

網(wǎng)絡(luò)安全KeyMake注冊(cè)機(jī)

2011-04-21 09:10:16

2021-03-03 12:20:42

網(wǎng)絡(luò)安全DLL編程

2021-05-18 16:25:44

systemd啟動(dòng)項(xiàng)系統(tǒng)運(yùn)維

2009-07-07 12:09:04

注冊(cè)表開(kāi)發(fā).NET Compac

2021-01-26 13:45:03

網(wǎng)絡(luò)安全Winsock編程

2021-03-05 13:46:56

網(wǎng)絡(luò)安全遠(yuǎn)程線程

2010-10-20 17:14:03

SQL Server管

2015-09-08 17:43:36

Autoruns啟動(dòng)項(xiàng)Windows

2011-09-16 14:22:31

注冊(cè)表windowsVist

2021-02-21 18:19:43

網(wǎng)絡(luò)安全網(wǎng)絡(luò)安全編程創(chuàng)建進(jìn)程

2021-02-23 10:20:07

網(wǎng)絡(luò)安全進(jìn)程代碼

2011-08-04 16:37:09

注冊(cè)表編輯器注冊(cè)表

2021-02-19 09:30:52

網(wǎng)絡(luò)安全服務(wù)控制管理器代碼

2011-08-03 18:01:40

注冊(cè)表

2016-10-10 00:18:27

2009-06-15 09:56:22

2011-08-04 10:23:49

2019-04-24 12:49:00

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 欧美一区二区在线 | 日日操网站 | 久久人人爽人人爽人人片av免费 | 久久日韩粉嫩一区二区三区 | 欧美日韩在线观看视频 | 久久久久久免费精品一区二区三区 | av在线免费不卡 | 欧美日韩中文字幕 | 国产高清精品一区二区三区 | aaa级片| 夜夜骑av | 日韩综合网 | 蜜桃综合在线 | 不卡av电影在线播放 | 韩国av一区二区 | 亚洲三级在线观看 | 一级爱爱片 | 精品国产91 | 在线免费黄色小视频 | 91九色麻豆 | 精品综合久久 | 日韩一区在线播放 | 欧美理论 | 日韩av在线播 | 国产一区高清 | 伊人导航| 亚洲成人一区二区 | 亚洲日韩视频 | 色频 | 9久9久| 国产精品久久久久久久久久三级 | 亚洲午夜精品视频 | 国产成人精品久久二区二区91 | 亚洲天堂一区二区 | 久久av一区二区三区 | 免费看大片bbbb欧美 | 中文字幕日本一区二区 | 在线免费黄色小视频 | 81精品国产乱码久久久久久 | 成年免费视频 | 成人在线不卡 |