亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種注冊表虛擬化方法及裝置的制作方法

文檔序號:6443766閱讀:991來源:國知局
專利名稱:一種注冊表虛擬化方法及裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及計算機技術(shù)領(lǐng)域,特別涉及一種注冊表虛擬化方法及裝置。
背景技術(shù)
隨著技術(shù)發(fā)展,口袋操作系統(tǒng)(PKOS,Pocket Operating System)日益在國外發(fā)達國家和國內(nèi)大中型城市流行開來。其中,所述口袋操作系統(tǒng)是放置在可移動磁盤上的一個特殊的應(yīng)用軟件,其他應(yīng)用軟件可以在口袋操作系統(tǒng)進行安裝、運行、卸載等,應(yīng)用軟件產(chǎn)生的數(shù)據(jù)都包含在口袋操作系統(tǒng)中,實現(xiàn)應(yīng)用軟件在不同主機的移動性。同時,口袋操作系統(tǒng)具有便捷性和安全性,運行在I3KOS中的應(yīng)用軟件進程叫做虛擬進程。PKOS 的核心是一個系統(tǒng)應(yīng)用編程接口(API,Application Programming Interface)攔截層,用來攔截文件及注冊表的系統(tǒng)API,將虛擬進程對系統(tǒng)的修改操作重定向到HiOS的私有文件系統(tǒng)和私有注冊表中,并將HiOS中的私有文件系統(tǒng)和私有注冊表與本地主機上文件系統(tǒng)和注冊表進行合并,形成虛擬文件系統(tǒng)和虛擬注冊表。該攔截層執(zhí)行的重定向操作對虛擬進程透明,即虛擬進程不知道攔截層的存在。在對現(xiàn)有技術(shù)的研究和實踐過程中,本發(fā)明的發(fā)明人發(fā)現(xiàn),現(xiàn)有的實現(xiàn)方式中,當(dāng)需要加載的虛擬注冊表的數(shù)量較大時(比如大于2MB等),加載時間就會很長,從而導(dǎo)致 PKOS啟動比較慢,影響了口袋操作系統(tǒng)的運行性能。

發(fā)明內(nèi)容
本發(fā)明實施例提供一種注冊表虛擬化方法及裝置,以解決現(xiàn)有技術(shù)中口袋操作系統(tǒng)啟動比較慢的技術(shù)問題,以提高口袋操作系統(tǒng)的運行性能。為解決上述技術(shù)問題,本發(fā)明實施例提供一種虛擬注冊表更新方法,應(yīng)用于口袋操作系統(tǒng),所述方法包括組成私有注冊表,所述私有注冊表包括在主機系統(tǒng)注冊表中建立的與口袋操作系統(tǒng)對應(yīng)的系統(tǒng)注冊表虛擬分支,以及根據(jù)口袋操作系統(tǒng)中的虛擬進程構(gòu)建的內(nèi)存樹形結(jié)構(gòu);攔截口袋操作系統(tǒng)中虛擬進程對主機系統(tǒng)注冊表的所有操作,并將所有操作重定向到所述系統(tǒng)注冊表虛擬分支及內(nèi)存樹形結(jié)構(gòu)中,當(dāng)所攔截的操作為對系統(tǒng)注冊表的修改操作時,根據(jù)所攔截的操作修改所述系統(tǒng)注冊表虛擬分支中的該操作所對應(yīng)鍵值或項值, 當(dāng)所攔截的操作在所述內(nèi)存樹形結(jié)構(gòu)中對應(yīng)相同的鍵值或項值時,刪除所述內(nèi)存樹形結(jié)構(gòu)中與所述系統(tǒng)注冊表虛擬分支中與該操作對應(yīng)的相同的鍵值或項值;將修改后的所述系統(tǒng)注冊表虛擬分支更新到所述虛擬注冊表文件中;刪除所述私有注冊表。相應(yīng)的,本發(fā)明還提供一種虛擬注冊表更新裝置,應(yīng)用于口袋操作系統(tǒng),所述裝置包括組成單元,用于組成私有注冊表,所述私有注冊表包括在主機系統(tǒng)注冊表中建立
6的與口袋操作系統(tǒng)對應(yīng)的系統(tǒng)注冊表虛擬分支,以及根據(jù)口袋操作系統(tǒng)中的虛擬進程構(gòu)建的內(nèi)存樹形結(jié)構(gòu);攔截重定向單元,用于攔截口袋操作系統(tǒng)中虛擬進程對主機系統(tǒng)注冊表的所有操作,并將所有操作重定向到所述系統(tǒng)注冊表虛擬分支及內(nèi)存樹形結(jié)構(gòu)中,其中,當(dāng)所攔截的操作為對系統(tǒng)注冊表的修改操作時,根據(jù)所攔截的操作修改所述系統(tǒng)注冊表虛擬分支中的該操作所對應(yīng)鍵值或項值,當(dāng)所攔截的操作在所述內(nèi)存樹形結(jié)構(gòu)中對應(yīng)相同的鍵值或項值時,刪除所述內(nèi)存樹形結(jié)構(gòu)中與所述系統(tǒng)注冊表虛擬分支中與該操作對應(yīng)的相同的鍵值或項值;更新單元,用于將修改后的所述系統(tǒng)注冊表虛擬分支更新到所述虛擬注冊表文件中;第一刪除單元,用于刪除所述私有注冊表。由上述技術(shù)方案可知,本發(fā)明實施例中,在口袋操作系統(tǒng)啟動時,僅創(chuàng)2建系統(tǒng)注冊表虛擬分支,而在虛擬進程啟動時才構(gòu)建與該虛擬進程對應(yīng)的內(nèi)存樹形結(jié)構(gòu),并在口袋操作系統(tǒng)中虛擬進程運行時,不斷修改系統(tǒng)注冊表中虛擬分支中相關(guān)函數(shù),從而使得對系統(tǒng)注冊表虛擬分支的修改等內(nèi)容,在各個虛擬進程運行時共享;而在虛擬進程運行時對需要修改的相關(guān)函數(shù)如果在內(nèi)存樹形結(jié)構(gòu)中存在的話,就刪除內(nèi)存樹形結(jié)構(gòu)中所述相關(guān)的函數(shù),以使得內(nèi)存樹形結(jié)構(gòu)中后續(xù)應(yīng)用程序查詢量減小,加快處理速度??诖僮飨到y(tǒng)使用系統(tǒng)注冊表虛擬分支和內(nèi)存空間樹形結(jié)構(gòu)相結(jié)合的方式,優(yōu)化了口袋操作系統(tǒng)啟動速度,提高了口袋操作系統(tǒng)的運行性能,同時也提高了用戶的體驗度。


圖1為本發(fā)明實施例提供的一種虛擬注冊表更新方法的流程圖;圖2為本發(fā)明實施例提供的一種組成私有注冊表的具體流程圖;圖3為本發(fā)明實施例提供的一種虛擬注冊表修改操作的流程圖;圖4為本發(fā)明實施例提供的一種虛擬注冊表查詢操作的流程圖;圖5為本發(fā)明實施例提供的一種退出口袋操作系統(tǒng)的流程圖;圖6為本發(fā)明實施例提供的一種虛擬注冊表更新裝置的結(jié)構(gòu)示意圖。
具體實施例方式為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明實施例的方案,下面結(jié)合附圖和實施方式對本發(fā)明實施例作進一步的詳細說明。請參閱圖1,為本發(fā)明實施例提供的一種虛擬注冊表更新方法的流程圖,所述方法包括步驟101 組成私有注冊表,所述私有注冊表包括在主機系統(tǒng)注冊表中建立的與口袋操作系統(tǒng)對應(yīng)的系統(tǒng)注冊表虛擬分支,以及根據(jù)口袋操作系統(tǒng)中的虛擬進程構(gòu)建的內(nèi)存樹形結(jié)構(gòu);本實施例中,所述私有注冊表包括內(nèi)存樹形結(jié)構(gòu)與系統(tǒng)注冊表虛擬分支,所述系統(tǒng)注冊表虛擬分支是口袋操作系統(tǒng)啟動時在主機系統(tǒng)注冊表中創(chuàng)建的一個分支;在虛擬進程啟動時,解析虛擬注冊表文件,得到虛擬注冊表信息;根據(jù)所述虛擬注冊表信息在內(nèi)存空間構(gòu)建虛擬進程的內(nèi)存樹形結(jié)構(gòu)。所述虛擬進程為運行在口袋操作系統(tǒng)中的應(yīng)用軟件進程。其中,組成私有注冊表的過程為在口袋操作系統(tǒng)啟動時,首先創(chuàng)建系統(tǒng)注冊表虛擬分支,口袋操作系統(tǒng)中的虛擬進程啟動時,解析虛擬注冊表文件,得到虛擬注冊表信息, 根據(jù)虛擬注冊表文件與當(dāng)前系統(tǒng)注冊表虛擬分支的狀態(tài)創(chuàng)建虛擬進程的內(nèi)存樹形結(jié)構(gòu),遍歷所述系統(tǒng)注冊表虛擬分支,刪除所述內(nèi)存樹形結(jié)構(gòu)中與系統(tǒng)注冊表虛擬分支相同的鍵或項值,所述系統(tǒng)注冊表虛擬分支為在口袋操作系統(tǒng)啟動時創(chuàng)建并在口袋操作系統(tǒng)任一虛擬進程運行時進行更新的系統(tǒng)注冊表虛擬分支;內(nèi)存樹形結(jié)構(gòu)與系統(tǒng)注冊表虛擬分支相結(jié)合組成私有注冊表。其中,組成本發(fā)明實施例中私有注冊表的方法并不限于上述方法,只要私有注冊表中由虛擬進程對應(yīng)的內(nèi)存樹形結(jié)構(gòu)及系統(tǒng)注冊表虛擬分支組成,對內(nèi)存樹形結(jié)構(gòu)中與系統(tǒng)注冊表虛擬分支相同的鍵或項值在形成私有注冊表的時候也可以不進行刪除。步驟102 攔截虛擬進程對系統(tǒng)注冊表的所有操作,并將所有操作重定向到所述系統(tǒng)注冊表虛擬分支及內(nèi)存樹形結(jié)構(gòu)中,當(dāng)所攔截的操作為對系統(tǒng)注冊表的修改操作時, 根據(jù)所攔截的操作修改所述系統(tǒng)注冊表虛擬分支中的該操作所對應(yīng)鍵值或項值,當(dāng)所攔截的操作在所述內(nèi)存樹形結(jié)構(gòu)中對應(yīng)相同的鍵值或項值時,刪除所述內(nèi)存樹形結(jié)構(gòu)中與所述系統(tǒng)注冊表虛擬分支中與該操作對應(yīng)的相同的鍵值或項值;在該步驟中,虛擬進程對注冊表的所有操作均被重定向到私有注冊表(即系統(tǒng)注冊表虛擬分支及內(nèi)存樹形結(jié)構(gòu))中,比如,虛擬進程對系統(tǒng)注冊表的修改操作都被攔截并重定向到該所述系統(tǒng)注冊表虛擬分支中等。其中,本實施例中虛擬進程對系統(tǒng)注冊表虛擬分支中信息進行操作可以包括對虛擬注冊表信息的修改操作,或者是對虛擬注冊表信息的查詢操作等,但并不限于此,其中, 所述的修改包括對已有數(shù)據(jù)的變更以及對沒有的數(shù)據(jù)進行創(chuàng)建。步驟103 將修改后的所述系統(tǒng)注冊表虛擬分支更新到所述虛擬注冊表文件中;在該步驟中,虛擬進程將私有注冊表的內(nèi)容更新到虛擬注冊表文件中;所述虛擬注冊表文件可以保存本地磁盤或移動硬盤上,也可以保存在其他的移動設(shè)備上,只要能被 windows操作系統(tǒng)識別,即可,本實施例不作限制。其中,所述虛擬注冊表文件中保存有虛擬進程對注冊表的修改操作。在口袋操作系統(tǒng)退出時,對修改后的系統(tǒng)注冊表虛擬分支中的內(nèi)容需要更新到口袋操作系統(tǒng)對應(yīng)的虛擬注冊表文件中,可以通過以下方法實現(xiàn)將遍歷所述系統(tǒng)注冊表虛擬分支,新建一個臨時內(nèi)存樹形結(jié)構(gòu),并將所述系統(tǒng)注冊表虛擬分支的所有信息添加到所述臨時內(nèi)存樹形結(jié)構(gòu)中,然后將所述臨時內(nèi)存樹形結(jié)構(gòu)中的所有信息以樹形結(jié)構(gòu)的形式保存到所述虛擬注冊表文件中,清空所述臨時內(nèi)存樹形結(jié)構(gòu)中的所有信息。步驟104 刪除所述私有注冊表。在口袋操作系統(tǒng)退出時,刪除所述系統(tǒng)注冊表虛擬分支。其中,之前建立的內(nèi)存樹形結(jié)構(gòu)會在口袋操作系統(tǒng)退出時,自動刪除,因此,本發(fā)明實施例中刪除私有注冊表,可以僅刪除所述系統(tǒng)注冊表的虛擬分支。其中,在該實施例中,步驟102以兩種情況為例,但并不限于此,一種情況是,虛擬進程在修改注冊表中的某一鍵值或項值(所述鍵值或項值,泛指注冊表中的項或鍵或者值,所述值又包括名稱、類型和數(shù)據(jù))K時,可以分別查詢系統(tǒng)注冊表虛擬分支中和內(nèi)存樹形結(jié)構(gòu)中是否存在待修改的鍵值或項值,為提高查詢效率,本發(fā)明實施例中,可以先查詢所述系統(tǒng)注冊表虛擬分支中是否存在鍵值或項值K,再查詢內(nèi)存樹形結(jié)構(gòu)中是否存在鍵值或項值K,如果鍵值或項值都不存在,則直接在系統(tǒng)注冊表虛擬分支中創(chuàng)建鍵值或項值K,并向虛擬進程返回創(chuàng)建成功的消息。如果鍵值或項值都存在,則刪除鍵值或項值K,修改鍵值或項值K,并向虛擬進程返回修改成功的消息。如果鍵值或項值不存在,則修改鍵值或項值 K并向虛擬進程返回修改成功的消息。如果系統(tǒng)注冊表虛擬分支不存在鍵值或項值K,但內(nèi)存樹形結(jié)構(gòu)中存在鍵值或項值K存在,則將內(nèi)存樹形結(jié)構(gòu)中存在鍵值或項值K導(dǎo)入到系統(tǒng)注冊表虛擬分支中,然后修改系統(tǒng)注冊表虛擬分支的鍵值或項值K,并返回修改成功的消肩、ο另一種情況是虛擬進程在查詢注冊表某一鍵值K時,先查詢所述系統(tǒng)注冊表虛擬分支中是否存在鍵值或項值K,再查詢內(nèi)存樹形結(jié)構(gòu)中是否存在鍵值或項值K,如果系統(tǒng)注冊表虛擬分支和內(nèi)存樹形結(jié)構(gòu)中都不存在鍵值或項值,則直接返回所述鍵值或項值不存在。如果系統(tǒng)注冊表虛擬分支和內(nèi)存樹形結(jié)構(gòu)中都存在所述鍵值或項值,則刪除內(nèi)存樹形結(jié)構(gòu)中的鍵值或項值K并返回鍵值或項值。如果系統(tǒng)注冊表虛擬分支存在所述鍵值或項值 K,但內(nèi)存樹形結(jié)構(gòu)中不存在鍵值或項值K,則返回系統(tǒng)注冊表虛擬分支存在所述鍵值或項值K。如果系統(tǒng)注冊表虛擬分支不存在所述鍵值或項值K,但內(nèi)存樹形結(jié)構(gòu)中存在鍵值或項值K,則返回內(nèi)存樹形結(jié)構(gòu)中存在鍵值或項值K??诖僮飨到y(tǒng)中可能存在多個虛擬程序,每個虛擬程序?qū)ψ员淼牟樵兓蛐薷牟僮鞫疾槐M相同。所以在某些時間會出現(xiàn)所述內(nèi)存樹形結(jié)構(gòu)和所述系統(tǒng)注冊表虛擬分支中的鍵值或項值不完全相同的情況。本發(fā)明實施例應(yīng)用于口袋操作系統(tǒng)(PK0S,Pocket Operating System),口袋操作系統(tǒng)存儲于移動存儲設(shè)備中,比如移動硬盤等,但并不限于此。在口袋操作系統(tǒng)與主機系統(tǒng)進行信息交互時,比如,一個普通應(yīng)用程序,所有功能可能涉及到大量注冊表信息,但在啟動時,大部分注冊表操作是查詢類操作;程序運行時,也是僅對少量注冊表信息進行修改; 而對于注冊表操作函數(shù),查詢類函數(shù)速度很快,而修改類函數(shù)時間較慢;基于此,本發(fā)明實施例中,在口袋操作系統(tǒng)啟動時,僅創(chuàng)建系統(tǒng)注冊表虛擬分支,而在虛擬進程啟動時才構(gòu)建內(nèi)存樹形結(jié)構(gòu),并在口袋操作系統(tǒng)中虛擬進程運行時,不斷修改系統(tǒng)注冊表中虛擬分支中相關(guān)函數(shù),從而使得對系統(tǒng)注冊表虛擬分支的修改等內(nèi)容,在各個虛擬進程運行時共享;而在虛擬進程運行時對需要修改的相關(guān)函數(shù)如果在內(nèi)存樹形結(jié)構(gòu)中存在的話,就刪除內(nèi)存樹形結(jié)構(gòu)中所述相關(guān)的函數(shù),以使得內(nèi)存樹形結(jié)構(gòu)中后續(xù)應(yīng)用程序查詢量減小,加快處理速度。因此,本發(fā)明實施例的口袋操作系統(tǒng)使用“創(chuàng)建系統(tǒng)注冊表虛擬分支(VRegSubNode)和建立內(nèi)存空間樹形結(jié)構(gòu)(VRegMemTree) ”相結(jié)合的方式優(yōu)化了口袋操作系統(tǒng)啟動速度,提高了口袋操作系統(tǒng)的運行性能,提高了用戶的體驗度。下面分別對圖1中各個步驟進行詳細的描述。還請參閱圖2,為本發(fā)明實施例中提供的一種組成私有注冊表操作的具體流程圖, 在該實施例中,組成私有注冊表可以理解為對虛擬注冊表文件的初始化,也可以理解為對虛擬注冊表的加載操作,具體包括步驟201 口袋操作系統(tǒng)啟動時,創(chuàng)建系統(tǒng)注冊表虛擬分支;步驟202 在虛擬進程啟動時,解析虛擬注冊表文件,得到虛擬注冊表信息;
步驟203 根據(jù)所述虛擬注冊表信息在內(nèi)存空間構(gòu)建內(nèi)存樹形結(jié)構(gòu);步驟204:遍歷系統(tǒng)注冊表虛擬分支,并刪除所述內(nèi)存樹形結(jié)構(gòu)中與系統(tǒng)注冊表虛擬分支相同的鍵或項值。其中,所述遍歷系統(tǒng)注冊表虛擬分支,就是遍歷H(0S啟動時在主機系統(tǒng)注冊表中創(chuàng)建的一個分支,虛擬進程對注冊表的修改操作都被攔截并重定向到該分支。所述構(gòu)建內(nèi)存樹形結(jié)構(gòu),就是先解析虛擬注冊表文件,然后,根據(jù)解析后的數(shù)據(jù)在內(nèi)存空間建立虛擬注冊表的內(nèi)存樹形結(jié)構(gòu),也就是說,內(nèi)存樹形結(jié)構(gòu)是建立在主機的內(nèi)存空間上。還請參閱圖3,為本發(fā)明實施例提供的一種虛擬注冊表修改操作的流程圖,該實施例為對所述私有注冊表中的虛擬注冊表信息進行操作處理的一種情況,本實施例以修改注冊表中某一鍵值為例,具體包括步驟301 攔截到虛擬進程修改注冊表中某一鍵值K操作;步驟302 口袋操作系統(tǒng)查找所述系統(tǒng)注冊表虛擬分支中是否存在鍵值Kl ;如果不存在,執(zhí)行步驟303 ;如果存在,執(zhí)行步驟304 ;步驟303 口袋操作系統(tǒng)查詢所述內(nèi)存樹形結(jié)構(gòu)中是否存在鍵值K2 ;如果不存在, 執(zhí)行步驟305 ;如果存在,執(zhí)行步驟306 ;步驟304 口袋操作系統(tǒng)查詢所述內(nèi)存樹形結(jié)構(gòu)中是否存在鍵值K2 ;如果存在,執(zhí)行步驟307 ;如果不存在,執(zhí)行步驟308 ;步驟305 口袋操作系統(tǒng)在系統(tǒng)注冊表虛擬分支中創(chuàng)建鍵值Kl ;步驟306 口袋操作系統(tǒng)將所述內(nèi)存樹形結(jié)構(gòu)中的該鍵值K2導(dǎo)入系統(tǒng)注冊表虛擬分支Ki中;步驟307 口袋操作系統(tǒng)刪除內(nèi)存樹形結(jié)構(gòu)中的鍵值K2 ;步驟308 口袋操作系統(tǒng)修改系統(tǒng)注冊表虛擬分支中的鍵值Kl ;步驟309 口袋操作系統(tǒng)反饋鍵值Kl。在該實施例中,K = Kl = K2。也就是說,在該實施例中,虛擬進程修改鍵值或項值Kl時,口袋操作系統(tǒng)先查詢所述系統(tǒng)注冊表虛擬分支中是否存在鍵值或項值K1,再查詢內(nèi)存樹形結(jié)構(gòu)中是否存在鍵值或項值K2,如果Kl和K2都不存在,則直接在系統(tǒng)注冊表虛擬分支中創(chuàng)建K1,并返回創(chuàng)建成功消息。如果Kl和K2都存在,則刪除K2,修改K1,并返回修改成功的消息。如果Kl存在但K2不存在,則修改K1,并返回修改成功的消息。如果Kl不存在但K2存在,則將K2導(dǎo)入到Kl中,然后修改K1,并返回修改成功的消息。還請參閱圖4,為本發(fā)明實施例提供的一種虛擬注冊表查詢操作的流程圖,在該實施例為對所述私有注冊表中的虛擬注冊表信息進行操作處理的另一種情況,具體包括步驟401 攔截到虛擬進程查詢虛擬注冊表K ;步驟402 口袋操作系統(tǒng)查詢所述系統(tǒng)注冊表分支是否存在Kl ;如果不是,執(zhí)行步驟403 ;如果是,執(zhí)行步驟404 ;步驟403 口袋操作系統(tǒng)查詢所述內(nèi)存樹形結(jié)構(gòu)是否存在K2,如果不是,執(zhí)行步驟 405 ;否則,執(zhí)行步驟406 ;步驟404 口袋操作系統(tǒng)查詢所述內(nèi)存樹形結(jié)構(gòu)是否存在K2,如果不是,執(zhí)行步驟 407 ;否則,執(zhí)行步驟408 ;降低查找冗余。步驟405 口袋操作系統(tǒng)反饋不存在鍵值或項值K ;虛擬程序返回查詢到的所述鍵值或項值K ;步驟406 口袋操作系統(tǒng)反饋K2步驟407 口袋操作系統(tǒng)反饋Kl步驟408 口袋操作系統(tǒng)刪除K2在該實施例中,K = Kl = K2。也就是說,虛擬進程在查詢注冊表某一鍵值K時,先查詢所述系統(tǒng)注冊表虛擬分支中是否存在鍵值或項值K1,再查詢內(nèi)存樹形結(jié)構(gòu)中是否存在鍵值或項值K2,如果Kl和K2 都不存在,則直接返回K不存在。如果Kl和K2都存在,則刪除K2并返回Kl。如果Kl存在但K2不存在,則返回Kl。如果Kl不存在但K2存在,則返回K2。還請參閱圖5,為本發(fā)明實施例中提供的一種退出口袋操作系統(tǒng)的流程圖,在該實施例中,即刪除私有注冊表,具體包括步驟501 口袋操作系統(tǒng)遍歷所述系統(tǒng)注冊表虛擬分支中修改后的注冊表信息;步驟502 解析虛擬注冊表文件并構(gòu)建臨時內(nèi)存樹形結(jié)構(gòu),將所述系統(tǒng)注冊表虛擬分支的所有信息添加到所述臨時內(nèi)存樹形結(jié)構(gòu)中;步驟503 將所述臨時內(nèi)存樹形結(jié)構(gòu)中的所有信息以樹形結(jié)構(gòu)的形式保存到所述虛擬注冊表文件中;步驟504 清除所述臨時內(nèi)存樹形結(jié)構(gòu)并刪除所述系統(tǒng)注冊表虛擬分支。也就是說,口袋操作系統(tǒng)首先遍歷所述系統(tǒng)注冊表虛擬分支,解析虛擬注冊表文件并構(gòu)建臨時內(nèi)存樹形結(jié)構(gòu),將所述系統(tǒng)注冊表虛擬分支的所有信息添加到所述臨時內(nèi)存樹形結(jié)構(gòu)中,然后將所述臨時內(nèi)存樹形結(jié)構(gòu)中的所有信息以樹形結(jié)構(gòu)的形式保存到所述虛擬注冊表文件中,最后清除所述臨時內(nèi)存樹形結(jié)構(gòu)并刪除所述系統(tǒng)注冊表虛擬分支,防止用戶信息泄露。由于本發(fā)明實施例虛擬程序啟動時,構(gòu)建了內(nèi)存空間樹形結(jié)構(gòu)的虛擬注冊表,時間快,即HiOS將私有鍵值或項值的創(chuàng)建分擔(dān)到注冊表信息修改時才創(chuàng)建,提高了 raos的啟動速度,以及提高了口袋操作系統(tǒng)的運行性能,增強了用戶體驗。進一步,當(dāng)虛擬注冊表信息發(fā)生變化時,系統(tǒng)注冊表虛擬分支及時更新,便于進程間通過注冊表共享、傳遞信息,還可以采用修改查詢注冊表中鍵值的信息來判定是否使用了本發(fā)明所述技術(shù)方案?;谏鲜龇椒ǖ膶崿F(xiàn)過程,本發(fā)明實施例還提供一種虛擬注冊表更新裝置,其結(jié)構(gòu)示意圖詳見圖6,所述裝置包括組成單元,61、攔截重定向單元62,更新單元63和第一刪除單元64。其中,所述組成單元61,用于組成私有注冊表,所述私有注冊表包括在主機系統(tǒng)注冊表中建立的與口袋操作系統(tǒng)對應(yīng)的系統(tǒng)注冊表虛擬分支,以及根據(jù)口袋操作系統(tǒng)中的虛擬進程構(gòu)建的內(nèi)存樹形結(jié)構(gòu);所述攔截重定向單元62,用于攔截口袋操作系統(tǒng)中虛擬進程對主機系統(tǒng)注冊表的所有操作,并將所有操作重定向到所述系統(tǒng)注冊表虛擬分支及內(nèi)存樹形結(jié)構(gòu)中,其中,當(dāng)所攔截的操作為對系統(tǒng)注冊表的修改操作時,根據(jù)所攔截的操作修改所述系統(tǒng)注冊表虛擬分支中的該操作所對應(yīng)鍵值或項值,當(dāng)所攔截的操作在所述內(nèi)存樹形結(jié)構(gòu)中對應(yīng)相同的鍵值或項值時,刪除所述內(nèi)存樹形結(jié)構(gòu)中與所述系統(tǒng)注冊表虛擬分支中與該操作對應(yīng)的相同的鍵值或項值;所述更新單元63,用于將修改后的所述系統(tǒng)注冊表虛擬分支更新到所述虛擬注冊表文件中;所述第一刪除單元64,用于刪除所述私有注冊表,具體用于在口袋操作系統(tǒng)退出時,刪除所述系統(tǒng)注冊表虛擬分支。其中,所述組成單元包括解析單元,內(nèi)存樹形結(jié)構(gòu)構(gòu)建單元和第二刪除單元,其中,所述第一初始化單元,用于在口袋操作系統(tǒng)啟動時,創(chuàng)建系統(tǒng)注冊表虛擬分支;所述解析單元,用于在虛擬程序啟動時,解析所述虛擬注冊表文件,得到虛擬注冊表信息;所述內(nèi)存樹形結(jié)構(gòu)構(gòu)建單元,用于根據(jù)所述虛擬注冊表信息在內(nèi)存空間構(gòu)建內(nèi)存樹形結(jié)構(gòu);所述第二刪除單元,用于遍歷所述系統(tǒng)注冊表虛擬分支,刪除所述內(nèi)存樹形結(jié)構(gòu)中與系統(tǒng)注冊表虛擬分支相同的鍵值或項值。優(yōu)選的,當(dāng)所述操作為修改操作時,所述攔截重定向單元包括第一查詢單元,創(chuàng)建單元,第三刪除單元,第一返饋單元和導(dǎo)入單元,其中,所述第一查詢單元,用于在修改一個鍵值或項值時,分別查詢所述系統(tǒng)注冊表虛擬分支和內(nèi)存樹形結(jié)構(gòu)中是否存在所述鍵值或項值;所述創(chuàng)建單元,用于在所述第一查詢單元從所述系統(tǒng)注冊表虛擬分支和內(nèi)存樹形結(jié)構(gòu)中均沒有查詢到時,直接在所述系統(tǒng)注冊表虛擬分支中創(chuàng)建該鍵值或項值并返回;所述第三刪除單元,用于在所述第一查詢單元從所述系統(tǒng)注冊表虛擬分支和內(nèi)存樹形結(jié)構(gòu)中均查詢到時,刪除所述內(nèi)存樹形結(jié)構(gòu)中的所述鍵值或項值,修改系統(tǒng)注冊表虛擬分支中所述鍵值或項值;所述第一返饋單元,用于在所述第一查詢單元從所述系統(tǒng)注冊表虛擬分支查詢到所述鍵值或項值,且從所述內(nèi)存樹形結(jié)構(gòu)中沒有查詢到所述鍵值或項值時,修改所述系統(tǒng)注冊表虛擬分支中的所述鍵值或項值;所述導(dǎo)入單元,用于在所述第一查詢單元從所述系統(tǒng)注冊表虛擬分支沒有查詢到所述鍵值或項值,且從所述內(nèi)存樹形結(jié)構(gòu)中查詢到所述鍵值或項值時,將所述內(nèi)存樹形結(jié)構(gòu)中的所述鍵值或項值導(dǎo)入到所述系統(tǒng)注冊表虛擬分支中,對導(dǎo)入后的所述系統(tǒng)注冊表虛擬分支中的所述鍵值或項值進行修改。優(yōu)選的,所述攔截重定向單元還用于,當(dāng)所述操作為對系統(tǒng)注冊表的查詢操作時, 返回查詢結(jié)果,并當(dāng)所述內(nèi)存樹形結(jié)構(gòu)中與所述系統(tǒng)注冊表虛擬分支中都有該操作所對應(yīng)的鍵值和項值時,刪除所述內(nèi)存樹形結(jié)構(gòu)中與該操作對應(yīng)的相同的鍵值或項值。其中,當(dāng)所述操作為查詢操作時,所述攔截重定向單元還可以包括第二查詢單元,第二返饋單元,第四刪除單元,第三返饋單元和第四返饋單元,其中,所述第二查詢單元,用于在查詢一個鍵值或項值時,分別查詢所述系統(tǒng)注冊表虛擬分支和內(nèi)存樹形結(jié)構(gòu)中是否存在所述鍵值或項值;所述第二返饋單元,用于在所述第二查詢單元從所述系統(tǒng)注冊表虛擬分支和所述內(nèi)存樹形結(jié)構(gòu)中都沒有查詢到所述鍵值或項值時,直接返回不存在所述鍵值或項值;所述第四刪除單元,用于在所述第二查詢單元從所述系統(tǒng)注冊表虛擬分支和所述內(nèi)存樹形結(jié)構(gòu)中都查詢到所述鍵值或項值時,刪除所述內(nèi)存樹形結(jié)構(gòu)中的所述鍵值或項值,并返回所述系統(tǒng)注冊表虛擬分支中的所述鍵值或項值;所述第三返饋單元,用于在所述第二查詢單元從所述系統(tǒng)注冊表虛擬分支查找到所述鍵值或項值,且從所述內(nèi)存樹形結(jié)構(gòu)中沒有查找到所述鍵值或項值時,返回所述系統(tǒng)注冊表虛擬分支中的所述鍵值或項值; 所述第四返饋單元,用于在所述第二查詢單元從所述系統(tǒng)注冊表虛擬分支沒有查找到所述鍵值或項值,且從所述內(nèi)存樹形結(jié)構(gòu)中查找到所述鍵值或項值時,則返回所述內(nèi)存樹形結(jié)構(gòu)中存在所述鍵值或項值。優(yōu)選的,當(dāng)所述操作為查詢操作時,所述攔截重定單元還可以包括第三查找單元,第四查找單元,第五反饋單元,第六反饋單元,第五查找單元,第五刪除單元和第七反饋單元,其中,所述第三查找單元,用于先查找所述系統(tǒng)注冊表虛擬分支是否存在所述鍵值或項值,所述第四查找單元,用于在所述第三查找單元沒有查找到所述鍵值或項值時,繼續(xù)查找所述內(nèi)存樹形結(jié)構(gòu)是否存在對應(yīng)的所述鍵值或項值,所述第五反饋單元,用于在所述第四查找單元從所述內(nèi)存樹形結(jié)構(gòu)中查找所述述鍵值或項值時,反饋在內(nèi)存樹形結(jié)構(gòu)中查找到的所述鍵值或項值,所述第六反饋單元,用于在所述第四查找單元從所述內(nèi)存樹形結(jié)構(gòu)中沒有查找所述述鍵值或項值時,反饋在系統(tǒng)注冊表虛擬分支和內(nèi)存樹形結(jié)構(gòu)中均沒有查找到所述鍵值或項值;所述第五查找單元,用于在所述第三查找單元查找到所述鍵值或項值時,繼續(xù)查找所述內(nèi)存樹形結(jié)構(gòu)是否存在對應(yīng)的所述鍵值或項值;所述第五刪除單元, 用于在所述第五查詢單元從所述內(nèi)存樹形結(jié)構(gòu)中查找到所述鍵值或項值,則刪除所述內(nèi)存樹形結(jié)構(gòu)中的所述鍵值或項值,返回所述系統(tǒng)注冊表虛擬分支中的所述鍵值或項值;所述第七反饋單元,用于在所述第五查詢單元從所述內(nèi)存樹形結(jié)構(gòu)中沒有查找到所述鍵值或項值,則返回所述系統(tǒng)注冊表虛擬分支中的所述鍵值或項值。優(yōu)選的,所述更新單元包括遍歷單元,解析單元,添加單元,寫入單元,其中,所述遍歷單元,用于在口袋操作系統(tǒng)退出時,遍歷所述系統(tǒng)注冊表虛擬分支中修改后的注冊表信息;所述解析單元,用于解析虛擬注冊表文件并構(gòu)建臨時內(nèi)存樹形結(jié)構(gòu);所述添加單元, 用于將所述系統(tǒng)注冊表虛擬分支的所有信息添加到所述臨時內(nèi)存樹形結(jié)構(gòu)中,所述寫入單元,用于將所述臨時內(nèi)存樹形結(jié)構(gòu)中的所有信息以樹形結(jié)構(gòu)的形式全部寫入到所述虛擬注冊表文件中,并清空所述臨時內(nèi)存樹形結(jié)構(gòu)中的所有信息。由于本發(fā)明實施例虛擬程序啟動時,構(gòu)建了內(nèi)存空間樹形結(jié)構(gòu)的虛擬注冊表,時間快,即HiOS將私有鍵值或項值的創(chuàng)建分擔(dān)到注冊表信息修改時才創(chuàng)建,提高了 raos的啟動速度,以及提高了口袋操作系統(tǒng)的運行性能,增強了用戶體驗。需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備
所固有的要素。在沒有更多限制的情況下,由語句“包括一個......”限定的要素,并不排
除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實施方式。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品可以存儲在存儲介質(zhì)中,如ROM/ RAM、磁碟、光盤等,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器, 或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例或者實施例的某些部分所述的方法。以上所述僅是本發(fā)明的優(yōu)選實施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以作出若干改進和潤飾,這些改進和潤飾也應(yīng)視為本發(fā)明的保護范圍。
權(quán)利要求
1.一種虛擬注冊表更新方法,應(yīng)用于口袋操作系統(tǒng),其特征在于,包括組成私有注冊表,所述私有注冊表包括在主機系統(tǒng)注冊表中建立的與口袋操作系統(tǒng)對應(yīng)的系統(tǒng)注冊表虛擬分支,以及根據(jù)口袋操作系統(tǒng)中的虛擬進程構(gòu)建的內(nèi)存樹形結(jié)構(gòu);攔截口袋操作系統(tǒng)中虛擬進程對主機系統(tǒng)注冊表的所有操作,并將所有操作重定向到所述系統(tǒng)注冊表虛擬分支及內(nèi)存樹形結(jié)構(gòu)中,當(dāng)所攔截的操作為對系統(tǒng)注冊表的修改操作時,根據(jù)所攔截的操作修改所述系統(tǒng)注冊表虛擬分支中的該操作所對應(yīng)鍵值或項值,當(dāng)所攔截的操作在所述內(nèi)存樹形結(jié)構(gòu)中對應(yīng)相同的鍵值或項值時,刪除所述內(nèi)存樹形結(jié)構(gòu)中與所述系統(tǒng)注冊表虛擬分支中與該操作對應(yīng)的相同的鍵值或項值;將修改后的所述系統(tǒng)注冊表虛擬分支更新到所述虛擬注冊表文件中; 刪除所述私有注冊表。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述組成私有注冊表,包括 在虛擬進程啟動時,解析虛擬注冊表文件,得到虛擬注冊表信息;根據(jù)所述虛擬注冊表信息在內(nèi)存空間構(gòu)建虛擬進程的內(nèi)存樹形結(jié)構(gòu); 遍歷系統(tǒng)注冊表虛擬分支,刪除所述內(nèi)存樹形結(jié)構(gòu)中與系統(tǒng)注冊表虛擬分支相同的鍵值或項值,所述系統(tǒng)注冊表虛擬分支為在口袋操作系統(tǒng)啟動時創(chuàng)建并在口袋操作系統(tǒng)任一虛擬進程運行時進行更新的系統(tǒng)注冊表虛擬分支;所述內(nèi)存樹形結(jié)構(gòu)與系統(tǒng)注冊表虛擬分支組成私有注冊表。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,當(dāng)所述操作為對系統(tǒng)注冊表的修改操作時,更新所述系統(tǒng)注冊表虛擬分支中的操作對象,并當(dāng)所述操作在所述內(nèi)存樹形結(jié)構(gòu)中對應(yīng)相同的鍵值或項值時,刪除所述內(nèi)存樹形結(jié)構(gòu)中與所述系統(tǒng)注冊表虛擬分支中相同的鍵值或項值,包括虛擬進程在修改注冊表的一個鍵值或項值時,分別查詢所述系統(tǒng)注冊表虛擬分支和內(nèi)存樹形結(jié)構(gòu)中是否存在所述鍵值或項值;如果所述系統(tǒng)注冊表虛擬分支和所述內(nèi)存樹形結(jié)構(gòu)中都不存在所述鍵值或項值,則直接在所述系統(tǒng)注冊表虛擬分支中創(chuàng)建該鍵值或項值并返回;如果所述系統(tǒng)注冊表虛擬分支和所述內(nèi)存樹形結(jié)構(gòu)中都存在所述鍵值或項值,則刪除所述內(nèi)存樹形結(jié)構(gòu)中的所述鍵值或項值,修改系統(tǒng)注冊表虛擬分支中所述鍵值或項值;如果所述系統(tǒng)注冊表虛擬分支存在所述鍵值或項值,而所述內(nèi)存樹形結(jié)構(gòu)中不存在所述鍵值或項值,則修改所述系統(tǒng)注冊表虛擬分支中的所述鍵值或項值;如果所述系統(tǒng)注冊表虛擬分支不存在所述鍵值或項值,而所述內(nèi)存樹形結(jié)構(gòu)中存在所述鍵值或項值,則將所述內(nèi)存樹形結(jié)構(gòu)中的所述鍵值或項值導(dǎo)入到所述系統(tǒng)注冊表虛擬分支中,對導(dǎo)入后的所述系統(tǒng)注冊表虛擬分支中的所述鍵值或項值進行修改。
4.根據(jù)權(quán)利要求1或3所述的方法,其特征在于,該方法進一步包括,當(dāng)所述操作為對系統(tǒng)注冊表的查詢操作時,返回查詢結(jié)果,并當(dāng)所述內(nèi)存樹形結(jié)構(gòu)中與所述系統(tǒng)注冊表虛擬分支中都有該操作所對應(yīng)的鍵值和項值時,刪除所述內(nèi)存樹形結(jié)構(gòu)中與該操作對應(yīng)的相同的鍵值或項值。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述當(dāng)所述操作為對系統(tǒng)注冊表的查詢操作時,返回查詢結(jié)果,并當(dāng)所述內(nèi)存樹形結(jié)構(gòu)中與所述系統(tǒng)注冊表虛擬分支中都有該操作所對應(yīng)的鍵值和項值時,刪除所述內(nèi)存樹形結(jié)構(gòu)中與該操作對應(yīng)的相同的鍵值或項值,包括虛擬進程在查詢一個注冊表鍵值時,分別查詢所述系統(tǒng)注冊表虛擬分支和內(nèi)存樹形結(jié)構(gòu)中是否存在所述鍵值或項值;如果所述系統(tǒng)注冊表虛擬分支和所述內(nèi)存樹形結(jié)構(gòu)中都不存在所述鍵值或項值,則直接返回不存在所述鍵值或項值;如果所述系統(tǒng)注冊表虛擬分支和所述內(nèi)存樹形結(jié)構(gòu)中都存在所述鍵值或項值,則刪除所述內(nèi)存樹形結(jié)構(gòu)中的所述鍵值或項值,返回所述系統(tǒng)注冊表虛擬分支中的所述鍵值或項值;如果所述系統(tǒng)注冊表虛擬分支存在所述鍵值或項值,而所述內(nèi)存樹形結(jié)構(gòu)中不存在所述鍵值或項值,則返回所述系統(tǒng)注冊表虛擬分支中的所述鍵值或項值;如果所述系統(tǒng)注冊表虛擬分支不存在所述鍵值或項值,而所述內(nèi)存樹形結(jié)構(gòu)中存在所述鍵值或項值,則返回所述內(nèi)存樹形結(jié)構(gòu)中存在所述鍵值或項值。
6.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述當(dāng)所述操作為對系統(tǒng)注冊表的查詢操作時,返回查詢結(jié)果,并當(dāng)所述內(nèi)存樹形結(jié)構(gòu)中與所述系統(tǒng)注冊表虛擬分支中都有該操作所對應(yīng)的鍵值和項值時,刪除所述內(nèi)存樹形結(jié)構(gòu)中與該操作對應(yīng)的相同的鍵值或項值, 包括先查找所述系統(tǒng)注冊表虛擬分支是否存在所述鍵值或項值,如果在系統(tǒng)注冊表虛擬分支不存在所述鍵值或項值,則繼續(xù)查找所述內(nèi)存樹形結(jié)構(gòu)是否存在對應(yīng)的所述鍵值或項值,如果在內(nèi)存樹形結(jié)構(gòu)中存在,則反饋在內(nèi)存樹形結(jié)構(gòu)查找到的所述鍵值或項值,如果在內(nèi)存樹形結(jié)構(gòu)中不存在,反饋在系統(tǒng)注冊表虛擬分支和內(nèi)存樹形結(jié)構(gòu)中均沒有查找到所述鍵值或項值;如果在系統(tǒng)注冊表虛擬分支存在所述鍵值或項值,則繼續(xù)查找所述內(nèi)存樹形結(jié)構(gòu)是否存在對應(yīng)的所述鍵值或項值,如果在內(nèi)存樹形結(jié)構(gòu)中存在,則刪除所述內(nèi)存樹形結(jié)構(gòu)中的所述鍵值或項值,返回所述系統(tǒng)注冊表虛擬分支中的所述鍵值或項值;如果在內(nèi)存樹形結(jié)構(gòu)不存在,則返回所述系統(tǒng)注冊表虛擬分支中的所述鍵值或項值。
7.根據(jù)權(quán)利要求1-3任一項所述的方法,其特征在于,所述將修改后的所述系統(tǒng)注冊表虛擬分支更新到所述虛擬注冊表文件中,包括在口袋操作系統(tǒng)退出時,遍歷所述系統(tǒng)注冊表虛擬分支中修改后的注冊表信息,解析虛擬注冊表文件并構(gòu)建臨時內(nèi)存樹形結(jié)構(gòu),將所述系統(tǒng)注冊表虛擬分支的所有信息添加到所述臨時內(nèi)存樹形結(jié)構(gòu)中,然后將所述臨時內(nèi)存樹形結(jié)構(gòu)中的所有信息保存到所述虛擬注冊表文件中,并清空所述臨時內(nèi)存樹形結(jié)構(gòu)中的所有信息。
8.—種虛擬注冊表更新裝置,應(yīng)用于口袋操作系統(tǒng),其特征在于,所述裝置包括組成單元,用于組成私有注冊表,所述私有注冊表包括在主機系統(tǒng)注冊表中建立的與口袋操作系統(tǒng)對應(yīng)的系統(tǒng)注冊表虛擬分支,以及根據(jù)口袋操作系統(tǒng)中的虛擬進程構(gòu)建的內(nèi)存樹形結(jié)構(gòu);攔截重定向單元,用于攔截口袋操作系統(tǒng)中虛擬進程對主機系統(tǒng)注冊表的所有操作, 并將所有操作重定向到所述系統(tǒng)注冊表虛擬分支及內(nèi)存樹形結(jié)構(gòu)中,其中,當(dāng)所攔截的操作為對系統(tǒng)注冊表的修改操作時,根據(jù)所攔截的操作修改所述系統(tǒng)注冊表虛擬分支中的該操作所對應(yīng)鍵值或項值,并當(dāng)所攔截的操作在所述內(nèi)存樹形結(jié)構(gòu)中對應(yīng)相同的鍵值或項值時,刪除所述內(nèi)存樹形結(jié)構(gòu)中與所述系統(tǒng)注冊表虛擬分支中與該操作對應(yīng)的相同的鍵值或項值;更新單元,用于將修改后的所述系統(tǒng)注冊表虛擬分支更新到所述虛擬注冊表文件中; 第一刪除單元,用于刪除所述私有注冊表。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述組成單元包括解析單元,用于在虛擬程序啟動時,解析所述虛擬注冊表文件,得到虛擬注冊表信息; 內(nèi)存樹形結(jié)構(gòu)構(gòu)建單元,用于根據(jù)所述虛擬注冊表信息在內(nèi)存空間構(gòu)建內(nèi)存樹形結(jié)構(gòu);第二刪除單元,用于遍歷所述系統(tǒng)注冊表虛擬分支,刪除所述內(nèi)存樹形結(jié)構(gòu)中與系統(tǒng)注冊表虛擬分支相同的鍵值或項值,所述系統(tǒng)注冊表虛擬分支為在口袋操作系統(tǒng)啟動時創(chuàng)建并在口袋操作系統(tǒng)任一虛擬進程運行時進行更新的系統(tǒng)注冊表虛擬分支。
10.根據(jù)權(quán)利要求8所述的裝置,其特征在于,當(dāng)所述操作為修改操作時,所述攔截重定向單元包括第一查詢單元,用于在修改一個鍵值或項值時,分別查詢所述系統(tǒng)注冊表虛擬分支和內(nèi)存樹形結(jié)構(gòu)中是否存在所述鍵值或項值;創(chuàng)建單元,用于在所述第一查詢單元從所述系統(tǒng)注冊表虛擬分支和內(nèi)存樹形結(jié)構(gòu)中均沒有查詢到時,直接在所述系統(tǒng)注冊表虛擬分支中創(chuàng)建該鍵值或項值并返回;第三刪除單元,用于在所述第一查詢單元從所述系統(tǒng)注冊表虛擬分支和內(nèi)存樹形結(jié)構(gòu)中均查詢到時,刪除所述內(nèi)存樹形結(jié)構(gòu)中的所述鍵值或項值,修改系統(tǒng)注冊表虛擬分支中所述鍵值或項值;第一返饋單元,用于在所述第一查詢單元從所述系統(tǒng)注冊表虛擬分支查詢到所述鍵值或項值,而從所述內(nèi)存樹形結(jié)構(gòu)中沒有查詢到所述鍵值或項值時,修改所述系統(tǒng)注冊表虛擬分支中的所述鍵值或項值;導(dǎo)入單元,用于在所述第一查詢單元從所述系統(tǒng)注冊表虛擬分支沒有查詢到所述鍵值或項值,而從所述內(nèi)存樹形結(jié)構(gòu)中查詢到所述鍵值或項值時,將所述內(nèi)存樹形結(jié)構(gòu)中的所述鍵值或項值導(dǎo)入到所述系統(tǒng)注冊表虛擬分支中,對導(dǎo)入后的所述系統(tǒng)注冊表虛擬分支中的所述鍵值或項值進行修改。
11.根據(jù)權(quán)利要求8或10所述的裝置,其特征在于,所述攔截重定向單元還用于,當(dāng)所述操作為對系統(tǒng)注冊表的查詢操作時,返回查詢結(jié)果,并當(dāng)所述內(nèi)存樹形結(jié)構(gòu)中與所述系統(tǒng)注冊表虛擬分支中都有該操作所對應(yīng)的鍵值和項值時,刪除所述內(nèi)存樹形結(jié)構(gòu)中與該操作對應(yīng)的相同的鍵值或項值。
12.根據(jù)權(quán)利要求11所述的裝置,其特征在于,當(dāng)所述操作為查詢操作時,所述攔截重定向單元還包括第二查詢單元,用于在查詢一個鍵值或項值時,分別查詢所述系統(tǒng)注冊表虛擬分支和內(nèi)存樹形結(jié)構(gòu)中是否存在所述鍵值或項值;第二返饋單元,用于在所述第二查詢單元從所述系統(tǒng)注冊表虛擬分支和所述內(nèi)存樹形結(jié)構(gòu)中都沒有查詢到所述鍵值或項值時,直接返回不存在所述鍵值或項值;第四刪除單元,用于在所述第二查詢單元從所述系統(tǒng)注冊表虛擬分支和所述內(nèi)存樹形結(jié)構(gòu)中都查詢到所述鍵值或項值時,刪除所述內(nèi)存樹形結(jié)構(gòu)中的所述鍵值或項值,并返回所述系統(tǒng)注冊表虛擬分支中的所述鍵值或項值;第三返饋單元,用于在所述第二查詢單元從所述系統(tǒng)注冊表虛擬分支查找到所述鍵值或項值,而從所述內(nèi)存樹形結(jié)構(gòu)中沒有查找到所述鍵值或項值時,返回所述系統(tǒng)注冊表虛擬分支中的所述鍵值或項值;第四返饋單元,用于在所述第二查詢單元從所述系統(tǒng)注冊表虛擬分支沒有查找到所述鍵值或項值,而從所述內(nèi)存樹形結(jié)構(gòu)中查找到所述鍵值或項值時,則返回所述內(nèi)存樹形結(jié)構(gòu)中存在所述鍵值或項值。
13.根據(jù)權(quán)利要求11所述的裝置,其特征在于,當(dāng)所述操作為查詢操作時,所述攔截重定單元還包括第三查找單元,用于先查找所述系統(tǒng)注冊表虛擬分支是否存在所述鍵值或項值, 第四查找單元,用于在所述第三查找單元沒有查找到所述鍵值或項值時,繼續(xù)查找所述內(nèi)存樹形結(jié)構(gòu)是否存在對應(yīng)的所述鍵值或項值,第五反饋單元,用于在所述第四查找單元從所述內(nèi)存樹形結(jié)構(gòu)中查找所述述鍵值或項值時,反饋在內(nèi)存樹形結(jié)構(gòu)中查找到的所述鍵值或項值,第六反饋單元,用于在所述第四查找單元從所述內(nèi)存樹形結(jié)構(gòu)中沒有查找所述述鍵值或項值時,反饋在系統(tǒng)注冊表虛擬分支和內(nèi)存樹形結(jié)構(gòu)中均沒有查找到所述鍵值或項值;第五查找單元,用于在所述第三查找單元查找到所述鍵值或項值時,繼續(xù)查找所述內(nèi)存樹形結(jié)構(gòu)是否存在對應(yīng)的所述鍵值或項值;第五刪除單元,用于在所述第五查詢單元從所述內(nèi)存樹形結(jié)構(gòu)中查找到所述鍵值或項值,則刪除所述內(nèi)存樹形結(jié)構(gòu)中的所述鍵值或項值,返回所述系統(tǒng)注冊表虛擬分支中的所述鍵值或項值;第七反饋單元,用于在所述第五查詢單元從所述內(nèi)存樹形結(jié)構(gòu)中沒有查找到所述鍵值或項值,則返回所述系統(tǒng)注冊表虛擬分支中的所述鍵值或項值。
14.根據(jù)權(quán)利要求8至10任一項所述的裝置,其特征在于,所述更新單元包括遍歷單元,用于在口袋操作系統(tǒng)退出時,遍歷所述系統(tǒng)注冊表虛擬分支中修改后的注冊表信息;解析單元,用于解析虛擬注冊表文件并構(gòu)建臨時內(nèi)存樹形結(jié)構(gòu); 添加單元,用于將所述系統(tǒng)注冊表虛擬分支的所有信息添加到所述臨時內(nèi)存樹形結(jié)構(gòu)中,寫入單元,用于將所述臨時內(nèi)存樹形結(jié)構(gòu)中的所有信息全部寫入到所述虛擬注冊表文件中,并清空所述臨時內(nèi)存樹形結(jié)構(gòu)中的所有信息。
全文摘要
本發(fā)明實施例提供一種虛擬注冊表更新方法及裝置,所述方法包括根據(jù)虛擬進程的虛擬注冊表文件組成私有注冊表,所述私有注冊表包括在主機系統(tǒng)注冊表中建立的與口袋操作系統(tǒng)對應(yīng)的系統(tǒng)注冊表虛擬分支,以及根據(jù)口袋操作系統(tǒng)中的虛擬進程構(gòu)建的內(nèi)存樹形結(jié)構(gòu);攔截虛擬進程對系統(tǒng)注冊表的所有操作,并將所有操作重定向到所述系統(tǒng)注冊表虛擬分支和內(nèi)存樹形結(jié)構(gòu);將經(jīng)過重定向操作后的所述私有注冊表更新到所述虛擬注冊表文件中;刪除所述私有注冊表。本發(fā)明實施例解決了現(xiàn)有技術(shù)中口袋操作系統(tǒng)啟動比較慢的技術(shù)問題,提高了口袋操作系統(tǒng)的運行性能。
文檔編號G06F9/455GK102567078SQ20111044781
公開日2012年7月11日 申請日期2011年12月28日 優(yōu)先權(quán)日2011年12月28日
發(fā)明者任偉峰, 王奇飛 申請人:成都市華為賽門鐵克科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1