欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種可配置的文件快速識別和已損壞文件智能修復(fù)的方法

文檔序號:6614871閱讀:262來源:國知局
專利名稱:一種可配置的文件快速識別和已損壞文件智能修復(fù)的方法
技術(shù)領(lǐng)域
本發(fā)明涉及計算機軟件領(lǐng)域,特別是涉及Windows操作系統(tǒng)下一種可配置的文件快速識別和已損壞文件智能修復(fù)的方法。
背景技術(shù)
日常進行文件打開、瀏覽、修改和保存等操作時,常會遇到要操作的文件沒有擴展名,有擴展名但文件內(nèi)容遭到破壞,沒有擴展名同時內(nèi)容又遭到破壞等情況。Windows操作系統(tǒng)下雙擊未知類型文件會彈出“打開方式”對話框,讓用戶選擇安裝的軟件來打開未知文件。文件缺少擴展名時,若文件是自己創(chuàng)建的或處理過的文件時,自己可能知道文件類型, 可以通過Windows操作系統(tǒng)提供的“打開方式”對話框選擇相應(yīng)的軟件打開并處理文件,如果是別人的就會因無法知道文件類型而無法對文件進行打開并處理操作。若出現(xiàn)文件有擴展名但文件內(nèi)容遭到破壞或沒有擴展名同時內(nèi)容又遭到破壞的情況,在未經(jīng)過特殊修復(fù)之前,Windows操作系統(tǒng)無法對文件進行打開和處理操作。此時我們的通常做法是丟棄并刪除該文件,這樣往往會導(dǎo)致數(shù)據(jù)完整性的破壞和數(shù)據(jù)信息的丟失,進而給企業(yè)或個人造成重大損失。
Windows操作系統(tǒng)長期雄踞全球操作系統(tǒng)霸主地位,是當今主流操作系統(tǒng)的代表,研究Windows操作系統(tǒng)文件操作機制具有很好的代表性和通用性。對沒有擴展名、有擴展名但文件內(nèi)容遭到破壞或沒有擴展名同時內(nèi)容又遭到破壞的文件進行打開和處理時, Windows操作系統(tǒng)沒有對未知類型文件進行自動識別和對已損壞文件簡單修復(fù)的功能提供完美的解決方案。要打開和操作上述文件,需要專業(yè)人士首先對文件進行專業(yè)處理,費時費力又費錢,影響與用戶交互的友好性,增加了普通用戶操作未知類型文件和已損壞文件的難度,給用戶日常文件操作帶來了很大麻煩。發(fā)明內(nèi)容
本發(fā)明的目的是針對現(xiàn)有技術(shù)的不足,提供Windows操作系統(tǒng)下一種可配置的文件快速識別和已損壞文件智能修復(fù)的方法,能方便快捷地實現(xiàn)Windows操作系統(tǒng)下對未知類型文件的快速識別和對已損壞文件的智能修復(fù)。
為達到上述目的,本發(fā)明的技術(shù)方案提供一種Windows操作系統(tǒng)下未知類型文件快速識別和已損壞文件進行智能修復(fù)的方法,它包括以下內(nèi)容
當用戶選取要打開的文件后,首先判斷用戶要打開的文件是否有文件擴展名,如果用戶選擇的文件有文件擴展名,則軟件遍歷程序模塊(注此程序模塊是由專利發(fā)明人利用C#語言基于微軟.NET平臺開發(fā)的程序,具體實現(xiàn)詳見后面介紹)遍歷當前系統(tǒng)安裝的所有應(yīng)用軟件,并根據(jù)文件擴展名和應(yīng)用軟件的對應(yīng)關(guān)系,找到并啟動對應(yīng)的應(yīng)用軟件加載用戶選擇的文件內(nèi)容,若加載成功就顯示文件內(nèi)容。若加載不成功,說明該文件有文件擴展名,但文件內(nèi)容遭到破壞,文件修復(fù)程序模塊(注此程序模塊是由專利發(fā)明人利用C# 語言基于微軟.NET平臺開發(fā)的程序,具體實現(xiàn)詳見后面介紹)啟動并修復(fù)受損壞的文件,文件修復(fù)后繼續(xù)利用系統(tǒng)安裝的對應(yīng)軟件加載該文件,若成功,就顯示文件內(nèi)容,不成功繼續(xù)修復(fù),如此循環(huán),直到滿足要求為止。
當用戶選取操作的文件無文件類型擴展名時,文件內(nèi)容的字節(jié)流將被讀取到內(nèi)存,然后文件格式識別程序模塊(注此程序模塊是由專利發(fā)明人利用C#語言基于微軟.NET平臺開發(fā)的程序,具體實現(xiàn)詳見后面介紹)訪問文件格式數(shù)據(jù)庫(注此文件格式數(shù)據(jù)庫是專利發(fā)明人為存儲文件頭標識,文件格式,打開此種文件所需要的應(yīng)用程序和他們之間的對應(yīng)關(guān)系等數(shù)據(jù)所建立的Xml文件,具體實現(xiàn)詳見后面介紹),通過用戶操作的文件的文件頭標識和數(shù)據(jù)庫中文件頭標識的比對得到文件的類型和打開文件所需要的應(yīng)用軟件。然后軟件遍歷程序模塊遍歷當前系統(tǒng)安裝的所有應(yīng)用軟件,判斷系統(tǒng)中是否安裝了所需要的軟件,如果沒安裝,則提示用戶安裝對應(yīng)的應(yīng)用軟件,并自動完成給該位置文件添加類型擴展名的操作,如果安裝了對應(yīng)的應(yīng)用軟件,則根據(jù)文件格式識別程序模塊識別出來的文件類型和打開該類型文件所需要的應(yīng)用軟件,找到并啟動對應(yīng)軟件加載用戶選擇的文件內(nèi)容,若加載成功則顯示文件內(nèi)容并接受用戶操作,在用戶保存該文件時自動給文件加上文件類型擴展名,以便下次進行文件操作時能快速識別文件類型。若加載不成功,文件修復(fù)程序模塊啟動并修復(fù)受損壞的文件,文件修復(fù)后繼續(xù)識別文件類型,遍歷系統(tǒng)軟件,加載文件內(nèi)容,若成功,就顯示文件內(nèi)容并接受用戶操作,在用戶保存該文件時自動給文件加上文件類型擴展名,不成功繼續(xù)修復(fù),如此循環(huán),直到滿足要求為止。
綜上所述,本發(fā)明一種可配置的文件快速識別和已損壞文件智能修復(fù)的方法,該方法具體步驟如下
步驟一 Windows操作系統(tǒng)下用戶選擇要操作的文件;
步驟二 通過鉤子程序獲取用戶選取文件的路徑和文件全名,并判斷該文件是否有文件類型擴展名。鉤子程序的實現(xiàn)要調(diào)用Win32的API函數(shù),具體過程如下
①調(diào)用int SetffindowsHookEx (int idHook, HookProcess lpfn, IntPtr hMod, int dwThreadld)安裝鉤子;
②調(diào)用UnHookWindowsEx (int idHook)卸載鉤子;
依據(jù)用戶選取文件的全路徑和文件名調(diào)用Path. HasExtensionO判斷文件是否有文件類型擴展名;如果有文件類型擴展名,則轉(zhuǎn)步驟三。
步驟三軟件遍歷程序模塊遍歷文件系統(tǒng)中安裝的所用應(yīng)用軟件,獲取軟件名及安裝路徑。其實現(xiàn)的具體過程為
①調(diào)用Registry. LocalMachine. OpenSubKey ()打開 Software\Microsof\ Windows\CurrentVersion\Uninstall 位置的注冊表;
②通過foreach 循環(huán)遍歷 Software\Microsof\Windows\Current Version\ Uninstall遍歷子項名稱的字符串數(shù)組;
③通過foreach循環(huán)遍歷子項節(jié)點;
④再調(diào)用RegistryKey. GetValue (〃DisplayName〃,〃〃)· ToStringO 獲取系統(tǒng)所安裝的所用應(yīng)用軟件的名稱;
⑤再調(diào)用RegistryKey. GetValue (〃DisplayIcon〃,〃〃)· ToStringO 獲取系統(tǒng)所安裝的所用應(yīng)用軟件的安裝路徑和文件名。
⑥同理通過foreach循環(huán)遍歷Software\Microsof遍歷子項獲取是否已安裝office, Sql Server, Visual Studio等其他軟件及其安裝路徑。
步驟四根據(jù)文件擴展名和應(yīng)用軟件的對應(yīng)關(guān)系,調(diào)用Process. Start(string fileName, string argument)找到并啟動對應(yīng)的應(yīng)用軟件加載用戶選擇的文件內(nèi)容;其中 fiIeName 指步驟三中的 RegistryKey. GetValue ("DisplayIcon", ""). ToString O 的值, argument指步驟二中獲取的用戶選取文件的路徑+文件全名。
步驟五判斷文件是否加載成功,如果加載成功就用對應(yīng)的應(yīng)用軟件顯示并操作用戶所選擇的文件內(nèi)容。
步驟六如果用戶所選擇的文件加載不成功,則通過文件修復(fù)程序模塊來修復(fù)文件內(nèi)容,然后繼續(xù)嘗試加載,如此循環(huán),直到滿足要求為止。
步驟七當步驟二調(diào)用Path. HasExtensionO判斷文件無文件類型擴展名時,此時需要通過文件流的方式讀取文件字節(jié)流。其實現(xiàn)的具體過程為;
①實例化一個文件流FileStreamunknownfs=new FileStream unknownfs(@ 文件全路徑 + 文件名,F(xiàn)ileMode. Open, FileAccess. Read);
②聲明并實例化一個緩沖區(qū)byte[] unknownf sbytes=new byte [unknownfs. Length];
③通過文件流實例化一個二進制文件讀取器BinaryReader unknownfsbr=new BinaryReader (unknownfs)。至此用戶所選的文件的內(nèi)容就被加載到了二進制文件讀取器, 就可以對文件內(nèi)容進行操作了。
步驟八獲取用戶選擇的字節(jié)流后就可以用文件格式識別程序模塊快速識別出其文件格式,文件格式識別程序模塊是通過讀取未知文件的文件頭標示,并依據(jù)文件格式數(shù)據(jù)庫中文件頭標示和文件格式的對應(yīng)關(guān)系確定文件的格式,并通過該數(shù)據(jù)庫中文件格式和打開該文件所需要的應(yīng)用程序之間的對應(yīng)關(guān)系找到打開該文件所需要的應(yīng)用程序。文件格式數(shù)據(jù)庫的xml文件格式如下
權(quán)利要求
1.一種可配置的文件快速識別和已損壞文件智能修復(fù)的方法,其特征在于該方法具體步驟如下 步驟一 Windows操作系統(tǒng)下用戶選擇要操作的文件; 步驟二 通過鉤子程序獲取用戶選取文件的路徑和文件全名,并判斷該文件是否有文件類型擴展名;鉤子程序的實現(xiàn)要調(diào)用Win32的API函數(shù),具體實現(xiàn)過程如下 ①調(diào)用int SetffindowsHookEx(int idHook, HookProcess lpfn,IntPtrhMod, intdwThreadld)安裝鉤子; ②調(diào)用UnHookWindowsEx (int idHook)卸載鉤子; 依據(jù)用戶選取文件的全路徑和文件名調(diào)用Path. HasExtensionO判斷文件是否有文件類型擴展名;如果有文件類型擴展名,則轉(zhuǎn)步驟三; 步驟三軟件遍歷程序模塊遍歷文件系統(tǒng)中安裝的所用應(yīng)用軟件,獲取軟件名及安裝路徑;其具體實現(xiàn)的過程為①調(diào)用Registry. LocalMachine. OpenSubKey ()打開 Software\Microsof\Windows\CurrentVersion\Uninstall 位置的注冊表; ②通過foreach 循環(huán)遍歷 Software\Microsof\ffindows\Current Version\Uninstall遍歷子項名稱的字符串數(shù)組; ③通過foreach循環(huán)遍歷子項節(jié)點; ④再調(diào)用RegistryKey. GetValue (〃DisplayName〃,〃〃). ToStringO 獲取系統(tǒng)所安裝的所用應(yīng)用軟件的名稱; ⑤再調(diào)用RegistryKey. GetValue (〃DisplayIcon〃,〃〃). ToStringO 獲取系統(tǒng)所安裝的所用應(yīng)用軟件的安裝路徑和文件名; ⑥同理通過foreach循環(huán)遍歷Software\Microsof遍歷子項獲取是否已安裝office,Sql Server, Visual Studio其他軟件及其安裝路徑; 步驟四根據(jù)文件擴展名和應(yīng)用軟件的對應(yīng)關(guān)系,調(diào)用Process. Start (stringfileName, string argument)找到并啟動對應(yīng)的應(yīng)用軟件加載用戶選擇的文件內(nèi)容;其中fi IeName 指步驟三中的 RegistryKey. GetValue ("Di splay I con", ""). ToString ()的值,argument指步驟二中獲取的用戶選取文件的路徑+文件全名; 步驟五判斷文件是否加載成功,如果加載成功就用對應(yīng)的應(yīng)用軟件顯示并操作用戶所選擇的文件內(nèi)容; 步驟六如果用戶所選擇的文件加載不成功,則通過文件修復(fù)程序模塊來修復(fù)文件內(nèi)容,然后繼續(xù)嘗試加載,如此循環(huán),直到滿足要求為止; 步驟七當步驟二調(diào)用Path. HasExtensionO判斷文件無文件類型擴展名時,此時需要通過文件流的方式讀取文件字節(jié)流,其具體實現(xiàn)的過程為; ①實例化一個文件流FileStreamunknownfs=new FileStream unknownfs (0 文件全路徑 + 文件名,F(xiàn)ileMode. Open, FileAccess. Read); ②聲明并實例化一個緩沖區(qū)byte[Junknownfsbytes=newbyte[unknownfs.Length]; ③通過文件流實例化一個二進制文件讀取器BinaryReaderunknownfsbr=newBinaryReader (unknownf s),至此用戶所選的文件的內(nèi)容就被加載到了二進制文件讀取器,對文件內(nèi)容就進行操作了; 步驟八獲取用戶選擇的字節(jié)流后就用文件格式識別程序模塊快速識別出其文件格式,文件格式識別程序模塊是通過讀取未知文件的文件頭標示,并依據(jù)文件格式數(shù)據(jù)庫中文件頭標示和文件格式的對應(yīng)關(guān)系確定文件的格式,并通過該數(shù)據(jù)庫中文件格式和打開該文件所需要的應(yīng)用程序之間的對應(yīng)關(guān)系找到打開該文件所需要的應(yīng)用程序;文件格式數(shù)據(jù)庫的xml文件格式如下
全文摘要
本發(fā)明一種可配置的文件快速識別和已損壞文件智能修復(fù)的方法,該方法有十四個步驟;本方法可以依據(jù)自定義文件格式數(shù)據(jù)庫實現(xiàn)文件的快速識別,可以多次自動、循環(huán)地嘗試對已損壞文件進行智能修復(fù),直至獲得滿意的結(jié)果;本方法設(shè)計的文件格式數(shù)據(jù)庫可以不斷的更新和修改,從而實現(xiàn)可配置的功能。它具有程序?qū)崿F(xiàn)簡單,功能強大,資源占用少,識別和修復(fù)效率高等優(yōu)點,這為文件快速識別和已損壞文件智能修復(fù)提供了一種自動、簡便、高效、可靠的解決方案,極大地提高了用戶工作效率。
文檔編號G06F9/445GK102981830SQ20121043336
公開日2013年3月20日 申請日期2012年11月2日 優(yōu)先權(quán)日2012年11月2日
發(fā)明者閆光榮, 劉嶺, 袁軻, 陶金庫, 紀長剛 申請人:北京航空航天大學(xué), 中航沈飛民用飛機有限責(zé)任公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
濮阳县| 鸡泽县| 克拉玛依市| 遵化市| 安西县| 林西县| 中阳县| 三明市| 青州市| 凉城县| 辉县市| 嘉荫县| 武功县| 五寨县| 县级市| 四川省| 聂拉木县| 凌海市| 通榆县| 抚顺市| 鸡东县| 安新县| 泸水县| 霍城县| 山丹县| 桑日县| 肥城市| 温泉县| 永康市| 张掖市| 平陆县| 云林县| 综艺| 拜泉县| 大丰市| 台前县| 开平市| 铜梁县| 绵阳市| 清流县| 全椒县|