對卸載的軟件進行垃圾清除的方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及信息技術(shù)領(lǐng)域,特別涉及一種對卸載的軟件進行垃圾清除的方法及裝置。
【背景技術(shù)】
[0002]隨著信息技術(shù)的不斷發(fā)展,人們可以安裝各種各樣的軟件來使用。由于安裝的軟件經(jīng)常會被卸載,在軟件被卸載后,通常會殘留一些垃圾文件,例如殘留注冊表和文件等。因此,如何對垃圾文件進行清除,成為優(yōu)化系統(tǒng)的關(guān)鍵。
[0003]現(xiàn)有技術(shù)對卸載的軟件進行垃圾清除時,一般是在通過啟動軟件管理工具或軟件卸載工具對軟件進行卸載后,直接掃描完成卸載的軟件殘留的垃圾文件,并刪除垃圾文件。
[0004]在實現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題:
[0005]由于軟件的卸載及對卸載的軟件進行垃圾清除時均需要啟動軟件管理工具或軟件卸載工具卸載軟件,如果用戶在未啟動軟件管理工具或軟件卸載工具的情況下,通過控制面板等方式卸載軟件,則由于軟件管理工具或軟件卸載工具未啟動,而無法對卸載的軟件進行垃圾清除,因此,現(xiàn)有技術(shù)中對卸載的軟件進行垃圾清除的靈活性不高,且應(yīng)用范圍具有一定的局限性。
【發(fā)明內(nèi)容】
[0006]為了解決現(xiàn)有技術(shù)的問題,本發(fā)明實施例提供了一種對卸載的軟件進行垃圾清除的方法及裝置。所述技術(shù)方案如下:
[0007]第一方面,提供了一種對卸載的軟件進行垃圾清除的方法,所述方法包括:
[0008]監(jiān)控進行卸載的軟件;
[0009]判斷所述進行卸載的軟件是否卸載完成;
[0010]若所述進行卸載的軟件卸載完成,則掃描完成卸載的軟件殘留的垃圾文件,并刪除所述垃圾文件。
[0011]第二方面,提供了一種對卸載的軟件進行垃圾清除的裝置,所述裝置包括:
[0012]監(jiān)控模塊,用于監(jiān)控進行卸載的軟件;
[0013]判斷模塊,用于判斷所述進行卸載的軟件是否卸載完成;
[0014]掃描模塊,用于當所述進行卸載的軟件卸載完成時,掃描完成卸載的軟件殘留的垃圾文件;
[0015]刪除模塊,用于刪除所述垃圾文件。
[0016]本發(fā)明實施例提供的技術(shù)方案帶來的有益效果是:
[0017]通過監(jiān)控進行卸載的軟件,并在判斷進行卸載的軟件卸載完成后,掃描完成卸載的軟件殘留的垃圾文件,并刪除垃圾文件,從而使對卸載的軟件進行垃圾清除不受到卸載方式的影響,提高了對卸載的軟件進行垃圾清除的靈活性,擴展了對卸載的軟件進行垃圾清除的應(yīng)用范圍。
【附圖說明】
[0018]為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0019]圖1是本發(fā)明實施例提供的對卸載的軟件進行垃圾清除的方法的流程圖;
[0020]圖2是本發(fā)明另一實施例提供的對卸載的軟件進行垃圾清除的方法的流程圖;
[0021]圖3是本發(fā)明另一實施例提供的對卸載的軟件進行垃圾清除的方法的流程圖;
[0022]圖4是本發(fā)明另一實施例提供的對卸載的軟件進行垃圾清除的裝置的結(jié)構(gòu)示意圖;
[0023]圖5是本發(fā)明另一實施例提供的監(jiān)控模塊的結(jié)構(gòu)示意圖;
[0024]圖6是本發(fā)明另一實施例提供的第一監(jiān)控單元的結(jié)構(gòu)示意圖;
[0025]圖7是本發(fā)明另一實施例提供的判斷模塊的結(jié)構(gòu)示意圖;
[0026]圖8是本發(fā)明另一實施例提供的監(jiān)控模塊的結(jié)構(gòu)示意圖;
[0027]圖9是本發(fā)明另一實施例提供的判斷模塊的結(jié)構(gòu)示意圖;
[0028]圖10是本發(fā)明另一實施例提供的終端的結(jié)構(gòu)示意圖。
【具體實施方式】
[0029]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明實施方式作進一步地詳細描述。
[0030]針對目前通過控制面板等方式卸載軟件,而無法對卸載的軟件進行垃圾清除的問題,本發(fā)明實施例提供了一種對卸載的軟件進行垃圾清除的方法,參見圖1,方法流程包括:
[0031]101:監(jiān)控進行卸載的軟件;
[0032]作為一種可選實施例,監(jiān)控進行卸載的軟件,包括:
[0033]監(jiān)控是否有卸載進程啟動及退出;
[0034]若監(jiān)控到有卸載進程啟動及退出,則將卸載進程對應(yīng)的軟件作為監(jiān)控到的進行卸載的軟件。
[0035]作為一種可選實施例,監(jiān)控是否有卸載進程啟動及退出,包括:
[0036]監(jiān)控所有啟動的進程,并從所有啟動的進程中查找卸載進程的父進程;
[0037]若從所有啟動的進程中查找到卸載進程的父進程,則監(jiān)控到有卸載進程啟動,并獲取所有工作對象;
[0038]從所有工作對象中查找卸載進程的父進程對應(yīng)的工作對象;
[0039]若卸載進程的父進程對應(yīng)的工作對象完成,則監(jiān)控到有卸載進程退出。
[0040]作為一種可選實施例,從所有啟動的進程中查找卸載進程的父進程,包括:
[0041]判斷所有啟動的進程中是否有系統(tǒng)進程;
[0042]若所有啟動的進程中有系統(tǒng)進程,則獲取系統(tǒng)進程的命令行參數(shù);
[0043]若命令行參數(shù)為預(yù)設(shè)的命令行參數(shù),則將系統(tǒng)進程作為查找到的卸載進程的父進程。
[0044]作為一種可選實施例,監(jiān)控進行卸載的軟件,包括:
[0045]監(jiān)控注冊表鍵值的修改;
[0046]若監(jiān)控到注冊表鍵值被修改,則獲取當前所有已安裝軟件的標識;
[0047]將當前所有已安裝軟件的標識與保存的已安裝軟件的標識進行比較,得到第二比較結(jié)果;
[0048]根據(jù)第二比較結(jié)果確定刪除的軟件,并將刪除的軟件作為監(jiān)控到的進行卸載的軟件。
[0049]102:判斷進行卸載的軟件是否卸載完成;
[0050]作為一種可選實施例,判斷進行卸載的軟件是否卸載完成,包括:
[0051]獲取當前所有已安裝軟件的標識,并將當前所有已安裝軟件的標識與保存的已安裝軟件的標識進行比較,得到第一比較結(jié)果;
[0052]根據(jù)第一比較結(jié)果判斷進行卸載的軟件是否卸載完成。
[0053]作為一種可選實施例,判斷進行卸載的軟件是否卸載完成,包括:
[0054]查找進行卸載的軟件的安裝目錄,并監(jiān)控安裝目錄的修改;
[0055]若安裝目錄被刪除或在預(yù)設(shè)時間內(nèi)沒有被修改,則判斷進行卸載的軟件對應(yīng)的卸載進程是否退出;
[0056]若進行卸載的軟件對應(yīng)的卸載進程退出,則判斷進行卸載的軟件卸載完成。
[0057]103:若進行卸載的軟件卸載完成,則掃描完成卸載的軟件殘留的垃圾文件,并刪除垃圾文件。
[0058]本發(fā)明實施例提供的方法,通過監(jiān)控進行卸載的軟件,并在判斷進行卸載的軟件卸載完成后,掃描完成卸載的軟件殘留的垃圾文件,并刪除垃圾文件,從而使對卸載的軟件進行垃圾清除不受到卸載方式的影響,提高了對卸載的軟件進行垃圾清除的靈活性,擴展了對卸載的軟件進行垃圾清除的應(yīng)用范圍。
[0059]本發(fā)明實施例提供了一種對卸載的軟件進行垃圾清除的方法,結(jié)合上述實施例的內(nèi)容,參見圖2,方法流程包括:
[0060]201:監(jiān)控是否有卸載進程啟動及退出;
[0061]關(guān)于監(jiān)控卸載進程啟動及退出的方式,本實施例不作具體限定。具體實施時,可啟動一個后臺線程,將該后臺線程作為監(jiān)控線程,即啟動監(jiān)控線程,通過監(jiān)控線程監(jiān)控是否有卸載進程啟動及退出。
[0062]作為一種可選實施例,在啟動監(jiān)控線程時,還可獲取并保存啟動監(jiān)控線程時所有已安裝軟件的標識。其中,所有已安裝軟件的標識可保存在列表中。
[0063]可選地,在獲取所有已安裝軟件的標識時,還可獲取所有已安裝軟件的安裝目錄。關(guān)于獲取所有已安裝軟件的標識及安裝目錄的方式,本實施例不作具體限定。具體實施時,可通過掃描注冊表中的卸載項獲取所有已安裝軟件的標識及安裝目錄。
[0064]作為一種可選實施例,監(jiān)控是否有卸載進程啟動及退出,包括但不限于:
[0065]監(jiān)控所有啟動的進程,并從所有啟動的進程中查找卸載進程的父進程;
[0066]若從所有啟動的進程中查找到卸載進程的父進程,則監(jiān)控到有卸載進程啟動,并獲取所有工作對象;
[0067]從所有工作對象中查找卸載進程的父進程對應(yīng)的工作對象;
[0068]若卸載進程的父進程對應(yīng)的工作對象完成,則監(jiān)控到有卸載進程退出。
[0069]其中,監(jiān)控所有啟動的進程的方式可以有多種,本實施例對此不作具體限定。例如,每隔預(yù)設(shè)時間獲取當前所有運行的進程,并與上一次獲取到的當前所有運行的進程進行比較,得到啟動的進程。又例如,使用驅(qū)動程序,通過使用windows系統(tǒng)提供的API (Applicat1n Programming Interface,應(yīng)用程序編程接口)函數(shù)PsSetCreateProcessNotifyRoutine向系統(tǒng)注冊回調(diào)函數(shù),當系統(tǒng)有新進程啟動時,回調(diào)函數(shù)會被執(zhí)行,從而監(jiān)控到啟動的進程。
[0070]由于卸載進程可能包括多個子卸載進程,為了準確地監(jiān)控到進行卸載的軟件,本實施例提供的方法從所有啟動的進程中查找卸載進程的父進程。
[0071]作為一種可選實