国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      對(duì)卸載的軟件進(jìn)行垃圾清除的方法及裝置的制造方法_2

      文檔序號(hào):9523963閱讀:來(lái)源:國(guó)知局
      施例,從所有啟動(dòng)的進(jìn)程中查找卸載進(jìn)程的父進(jìn)程,包括但不限于:
      [0072]判斷所有啟動(dòng)的進(jìn)程中是否有系統(tǒng)進(jìn)程;
      [0073]若所有啟動(dòng)的進(jìn)程中有系統(tǒng)進(jìn)程,則獲取系統(tǒng)進(jìn)程的命令行參數(shù);
      [0074]若命令行參數(shù)為預(yù)設(shè)的命令行參數(shù),則將系統(tǒng)進(jìn)程作為查找到的卸載進(jìn)程的父進(jìn)程。
      [0075]本發(fā)明實(shí)施例提供的方法以系統(tǒng)進(jìn)程為DllHost.exe為例進(jìn)行說(shuō)明。當(dāng)判斷所有啟動(dòng)的進(jìn)程中有DllHost.exe時(shí),判斷所有啟動(dòng)的進(jìn)程中有系統(tǒng)進(jìn)程,獲取DllHost.exe的命令行參數(shù);當(dāng)判斷獲取到的DllHost.exe的命令行參數(shù)為DllHost.exe/Processid: {FCC74B77-EC3E-4DD8-A80B-008A702075A9}時(shí),將系統(tǒng)進(jìn)程作為查找到的卸載進(jìn)程的父進(jìn)程。
      [0076]其中,獲取系統(tǒng)進(jìn)程的命令行參數(shù)的過(guò)程包括但不限于:通過(guò)OpenProcess函數(shù)根據(jù)系統(tǒng)進(jìn)程的ID (Identificat1n,標(biāo)識(shí))打開(kāi)系統(tǒng)進(jìn)程,讀取系統(tǒng)進(jìn)程的peb信息,從peb中提取命令行參數(shù)。
      [0077]由于從所有啟動(dòng)的進(jìn)程中查找到卸載進(jìn)程的父進(jìn)程,則可知監(jiān)控到有卸載進(jìn)程啟動(dòng)。在監(jiān)控到有卸載進(jìn)程啟動(dòng)后,本實(shí)施例提供的方法還監(jiān)控卸載進(jìn)程是否退出,包括但不限于:
      [0078]獲取所有工作對(duì)象;
      [0079]從所有工作對(duì)象中查找卸載進(jìn)程的父進(jìn)程對(duì)應(yīng)的工作對(duì)象;
      [0080]若卸載進(jìn)程的父進(jìn)程對(duì)應(yīng)的工作對(duì)象完成,則監(jiān)控到有卸載進(jìn)程退出。
      [0081]關(guān)于獲取所有工作對(duì)象的方式,本實(shí)施例不作具體限定。具體實(shí)施時(shí),可使用ntdll 的導(dǎo)出函數(shù) MyNtQuerySystemlnformat1n,并傳入 SystemHandlelnformat1n (值是十進(jìn)制的16)獲取所需要的空間,并分配獲取到的空間,再調(diào)用一次MyNtQuerySystemlnformat1n,從而枚舉所有工作對(duì)象,獲取所有工作對(duì)象。
      [0082]在獲取到所有工作對(duì)象后,輪訓(xùn)每個(gè)工作對(duì)象,查找屬于卸載進(jìn)程的父進(jìn)程對(duì)應(yīng)的工作對(duì)象的句柄,請(qǐng)求復(fù)制一份,使用系統(tǒng)用來(lái)等待事件的API (例如,WaitForSingleObject)等待卸載進(jìn)程的父進(jìn)程的工作對(duì)象完成;當(dāng)該卸載進(jìn)程的父進(jìn)程對(duì)應(yīng)的工作對(duì)象完成時(shí),表明監(jiān)控到有卸載進(jìn)程退出。
      [0083]通過(guò)監(jiān)控是否有卸載進(jìn)程啟動(dòng)及退出,使得對(duì)卸載的軟件進(jìn)行垃圾清除不受到卸載方式的影響,擴(kuò)展了對(duì)卸載的軟件進(jìn)行垃圾清除的應(yīng)用范圍,并且由于無(wú)需運(yùn)行軟件管理工具或軟件卸載工具卸載軟件,還可提高對(duì)卸載的軟件進(jìn)行垃圾清除的靈活性。當(dāng)監(jiān)控到有卸載進(jìn)程啟動(dòng)及退出時(shí),繼續(xù)執(zhí)行后續(xù)步驟202。
      [0084]202:將卸載進(jìn)程對(duì)應(yīng)的軟件作為監(jiān)控到的進(jìn)行卸載的軟件;
      [0085]由于監(jiān)控到有卸載進(jìn)程啟動(dòng)及退出,則表明卸載進(jìn)程對(duì)應(yīng)的軟件可能被卸載,將卸載進(jìn)程對(duì)應(yīng)的軟件作為監(jiān)控到的進(jìn)行卸載的軟件;又由于用戶可能在卸載過(guò)程中取消卸載,因此僅監(jiān)控到有卸載進(jìn)程啟動(dòng)及退出不能確定卸載進(jìn)程對(duì)應(yīng)的軟件是否被卸載。
      [0086]通過(guò)上述步驟201至步驟202即完成了監(jiān)控進(jìn)行卸載的軟件,為了確定進(jìn)行卸載的軟件是否被卸載,本實(shí)施例提供的方法還包括后續(xù)步驟。
      [0087]203:獲取當(dāng)前所有已安裝軟件的標(biāo)識(shí),并將當(dāng)前所有已安裝軟件的標(biāo)識(shí)與保存的已安裝軟件的標(biāo)識(shí)進(jìn)行比較,得到第一比較結(jié)果;
      [0088]為了確定進(jìn)行卸載的軟件是否被卸載,本實(shí)施例提供的方法通過(guò)監(jiān)控線程獲取當(dāng)前所有已安裝軟件的標(biāo)識(shí),關(guān)于獲取當(dāng)前所有已安裝軟件的標(biāo)識(shí)的方式可參照上述步驟201中獲取啟動(dòng)監(jiān)控線程時(shí)所有已安裝軟件的標(biāo)識(shí)的方式,此處不再贅述。
      [0089]由于卸載的軟件對(duì)應(yīng)的注冊(cè)表會(huì)被刪除,則可將當(dāng)前所有已安裝軟件的標(biāo)識(shí)與保存的已安裝軟件的標(biāo)識(shí)進(jìn)行比較,得到第一比較結(jié)果。其中,保存的已安裝軟件的標(biāo)識(shí)包括但不限于啟動(dòng)監(jiān)控線程時(shí)獲取并保存的所有已安裝軟件的標(biāo)識(shí),第一比較結(jié)果包括但不限于標(biāo)識(shí)增加、標(biāo)識(shí)缺少及標(biāo)識(shí)不變。
      [0090]204:根據(jù)第一比較結(jié)果判斷進(jìn)行卸載的軟件是否卸載完成;
      [0091]在根據(jù)第一比較結(jié)果判斷進(jìn)行卸載的軟件是否卸載完成時(shí),如果上述步驟203中第一比較結(jié)果為標(biāo)識(shí)減少,則表明減少的標(biāo)識(shí)對(duì)應(yīng)的軟件所對(duì)應(yīng)的注冊(cè)表被刪除,減少的標(biāo)識(shí)對(duì)應(yīng)的軟件卸載完成,即根據(jù)第一比較結(jié)果判斷進(jìn)行卸載的軟件卸載完成;如果第一比較結(jié)果為標(biāo)識(shí)不變,則表明沒(méi)有軟件對(duì)應(yīng)的注冊(cè)表被刪除,沒(méi)有軟件完成卸載,即根據(jù)第一比較結(jié)果判斷進(jìn)行卸載的軟件未卸載完成;如果第一比較結(jié)果為標(biāo)識(shí)增加,則表明可能新安裝了軟件,即根據(jù)第一比較結(jié)果判斷進(jìn)行卸載的軟件未卸載完成。
      [0092]進(jìn)一步地,通過(guò)上述步驟203至步驟204即完成了判斷進(jìn)行卸載的軟件是否卸載完成,若進(jìn)行卸載的軟件卸載完成,則繼續(xù)執(zhí)行后續(xù)步驟205。
      [0093]205:掃描完成卸載的軟件殘留的垃圾文件,并刪除垃圾文件。
      [0094]由于卸載軟件的過(guò)程中可能沒(méi)有將安裝目錄、快捷方式或注冊(cè)表鍵值等刪除,致使軟件卸載完成后,殘留垃圾文件。為了對(duì)卸載的軟件進(jìn)行垃圾清除,本發(fā)明實(shí)施例提供的方法在判斷進(jìn)行卸載的軟件完成卸載后,掃描完成卸載的軟件殘留的垃圾文件,并刪除垃圾文件。
      [0095]關(guān)于掃描完成卸載的軟件殘留的垃圾文件的方式,本實(shí)施例不作具體限定。具體實(shí)施時(shí),可根據(jù)完成卸載的軟件的安裝目錄掃描完成卸載的軟件殘留的垃圾文件。在掃描到完成卸載的軟件殘留的垃圾文件后,可刪除垃圾文件,從而優(yōu)化系統(tǒng)。
      [0096]本發(fā)明實(shí)施例提供的方法,通過(guò)監(jiān)控進(jìn)行卸載的軟件,并在判斷進(jìn)行卸載的軟件卸載完成后,掃描完成卸載的軟件殘留的垃圾文件,并刪除垃圾文件,從而使對(duì)卸載的軟件進(jìn)行垃圾清除不受到卸載方式的影響,提高了對(duì)卸載的軟件進(jìn)行垃圾清除的靈活性,擴(kuò)展了對(duì)卸載的軟件進(jìn)行垃圾清除的應(yīng)用范圍。
      [0097]本發(fā)明實(shí)施例提供了一種對(duì)卸載的軟件進(jìn)行垃圾清除的方法,結(jié)合上述實(shí)施例的內(nèi)容,參見(jiàn)圖3,方法流程包括:
      [0098]301:監(jiān)控注冊(cè)表鍵值的修改;
      [0099]關(guān)于監(jiān)控注冊(cè)表鍵值的修改的方式,本實(shí)施例不作具體限定。具體實(shí)施時(shí),可啟動(dòng)一個(gè)后臺(tái)線程,將該后臺(tái)線程作為監(jiān)控線程,即啟動(dòng)監(jiān)控線程,通過(guò)監(jiān)控線程監(jiān)控注冊(cè)表鍵值的修改。
      [0100]需要說(shuō)明的是,如果系統(tǒng)為64位,還需要同時(shí)監(jiān)控32位對(duì)應(yīng)鍵,可以使用系統(tǒng)提供的API中的RegNotifyChangeKeyValue對(duì)注冊(cè)表鍵值的修改進(jìn)行監(jiān)控。其中,注冊(cè)表鍵值的修改包括但不限于子鍵被刪除;32位對(duì)應(yīng)鍵為:
      [0101]HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ffindows\CurrentVers1n\Uninstall ;
      [0102]HKEY_CURRENT_USER\SOFTWARE\Microsoft\ffindows\CurrentVers1n\Uninstallο
      [0103]當(dāng)通過(guò)監(jiān)控線程監(jiān)控到注冊(cè)表鍵值被修改時(shí),繼續(xù)執(zhí)行后續(xù)步驟302。
      [0104]302:獲取當(dāng)前所有已安裝軟件的標(biāo)識(shí);
      [0105]本發(fā)明實(shí)施例提供的方法在監(jiān)控到注冊(cè)表鍵值被修改時(shí),觸發(fā)獲取當(dāng)前所有已安裝軟件的標(biāo)識(shí),從而無(wú)需實(shí)時(shí)獲取當(dāng)前所有已安裝軟件的標(biāo)識(shí),減少獲取當(dāng)前所有已安裝軟件的標(biāo)識(shí)的次數(shù)。
      [0106]關(guān)于獲取當(dāng)前所有已安裝軟件的標(biāo)識(shí)的方式可參照上一實(shí)施例中步驟201獲取啟動(dòng)監(jiān)控線程時(shí)所有已安裝軟件的標(biāo)識(shí)的方式,此處不再贅述。
      [0107]303:將當(dāng)前所有已安裝軟件的標(biāo)識(shí)與保存的已安裝軟件的標(biāo)識(shí)進(jìn)行比較,得到第二比較結(jié)果;
      [0108]該步驟的實(shí)現(xiàn)方式可參照上一實(shí)施例中步驟203將當(dāng)前所有已安裝軟件的標(biāo)識(shí)與保存的已安裝軟件的標(biāo)識(shí)進(jìn)行比較的方式,此處不再贅述。在將當(dāng)前所有已安裝軟件的標(biāo)識(shí)與保存的已安裝軟件的標(biāo)識(shí)進(jìn)行比較后,得到第二比較結(jié)果包括但不限于標(biāo)識(shí)增加、標(biāo)識(shí)缺少及標(biāo)識(shí)不變。
      [0109]304:根據(jù)第二比較結(jié)果確定刪除的軟件,并將刪除的軟件作為監(jiān)控到的進(jìn)行卸載的軟件;
      [0110]在根據(jù)第二比較結(jié)果確定刪除的軟件時(shí),如果上述步驟303中第二比較結(jié)果為標(biāo)識(shí)減少,則表明減少的標(biāo)識(shí)對(duì)應(yīng)的軟件可能被刪除,即將刪除的軟件作為監(jiān)控到的進(jìn)行卸載的軟件。
      [0111]通過(guò)上述步驟301至步驟304即完成了監(jiān)控進(jìn)行卸載的軟件,為了確定進(jìn)行卸載的軟件是否被卸載,本實(shí)施例提供的方法還包括后續(xù)步驟。
      [0112]305:查找進(jìn)行卸載的軟件的安裝目錄,并監(jiān)控安裝目錄的修改;
      [0113]關(guān)于查找進(jìn)行卸載的軟件的安裝目錄的方式,本實(shí)施例不作具體限定。具體實(shí)施時(shí),如果在啟動(dòng)監(jiān)控線程時(shí),已獲取并保存所有已安裝軟件的安裝目錄,則可通過(guò)監(jiān)控線程在保存的所有已安裝軟件的安裝目錄中查找進(jìn)行卸載的軟件的安裝目錄。
      [0114]作為一種可選實(shí)施例,在安裝目錄被刪除時(shí),可判斷安裝目錄被修改,則繼續(xù)執(zhí)行后續(xù)步驟306。由于軟件在卸載過(guò)程中,可能會(huì)殘留安裝目錄,則如果安裝目錄在預(yù)設(shè)時(shí)間內(nèi)沒(méi)有被修改,則可繼續(xù)執(zhí)行后續(xù)步驟306。關(guān)于預(yù)設(shè)時(shí)間的長(zhǎng)短,本實(shí)施例不作具體限定。
      [0115]306:判斷進(jìn)行卸載的軟件對(duì)應(yīng)的卸載進(jìn)程是否退出;
      [0116]為了確定進(jìn)行卸載的軟件是否卸載完成,本實(shí)施例提供的方法在監(jiān)控安裝目錄的被刪除或在預(yù)
      當(dāng)前第2頁(yè)1 2 3 4 5 
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1