根據(jù)本發(fā)明一個實施例的一種文件保護處理的方法實施例2的步驟流程圖;
[0056]圖3示出了根據(jù)本發(fā)明一個實施例的一種文件保護處理的裝置實施例1的結(jié)構(gòu)框圖;
[0057]圖4示出了根據(jù)本發(fā)明一個實施例的一種文件保護處理的裝置實施例2的結(jié)構(gòu)框圖。
【具體實施方式】
[0058]下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應(yīng)當(dāng)理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達給本領(lǐng)域的技術(shù)人員。
[0059]本發(fā)明實施例的核心構(gòu)思之一在于,通過文件過濾驅(qū)動對指定的文件和/或目錄(用戶加入保護的文件和/或目錄)以及指定的文件動作(刪除以及移動)進行過濾,對符合要求的動作進行阻塞,然后從文件過濾驅(qū)動通知到用戶接口,用戶接口進行邏輯判斷,生成判斷動作是應(yīng)被允許執(zhí)行還是攔截的信息,用戶接口將判斷信息返回文件過濾驅(qū)動,由文件過濾驅(qū)動最終完成允許和攔截的操作,通過這樣的過程來防止文件和/或目錄被錯誤刪除。
[0060]文件過濾驅(qū)動是由微軟公司提供的基于Windows NT文件系統(tǒng)的過濾驅(qū)動技術(shù)架構(gòu),文件過濾驅(qū)動工作于操作系統(tǒng)的內(nèi)核模式,處于文件系統(tǒng)(FAT/NTFS等格式)和I/O管理器之間,攔截I/O管理器發(fā)出的對文件系統(tǒng)的IRP(I/0 Request Packet即I/O請求包)和Fast-Ι/Ο請求并在分發(fā)前進行具體的過濾處理。目前最新的文件過濾驅(qū)動采用minifilter 架構(gòu)。
[0061]參照圖1,示出了根據(jù)本發(fā)明一個實施例的一種文件保護處理的方法實施例1的步驟流程圖,具體可以包括以下步驟:
[0062]步驟101:獲得受保護文件和/或目錄的路徑;
[0063]其中,目錄包括目錄本身,目錄里的子目錄及文件,獲得受保護文件和/或目錄的路徑為受保護文件和/或目錄的DOS路徑。
[0064]其中,所述受保護的文件包括直接跟在磁盤盤符后面的具有文件類型的文件,例如:C:\def.txt ;所述受保護的目錄里的子目錄或文件包括跟在磁盤盤符后面的是一個目錄名稱,目錄名稱后面是文件類型的文件,例如:C:\abc\def.txt ο
[0065]具體而言,一個文件和/或目錄在其DOS路徑中加入相應(yīng)規(guī)則才形成受保護文件和/或目錄。所述相應(yīng)規(guī)則可以是預(yù)先設(shè)定以及統(tǒng)計的規(guī)則,作為本實施例的一種優(yōu)選示例,一條相應(yīng)規(guī)則可以包括一個路徑以及一個操作類型,路徑中帶*號形成的規(guī)則為文件本身的規(guī)則,和/或目錄里子目錄及文件的規(guī)則,路徑中不帶*號形成的規(guī)則為目錄本身的規(guī)則。相應(yīng)規(guī)則可以存儲于一個文件中,或者以鏈表或節(jié)點樹等其他方式進行存儲,或存儲在服務(wù)器中,當(dāng)需要用到規(guī)則時,可以從文件列表中直接讀取,或從服務(wù)器中獲取實時更新的規(guī)則。規(guī)則會作為一個結(jié)構(gòu)體,從用戶接口通知到文件過濾驅(qū)動,例如:
[0066](I)為目錄添加規(guī)則
[0067]一個目錄,如 c:\abc\
[0068]則需要加入以下規(guī)則
[0069]C:\abc\ 的 RENAME
[0070]C:\abc\* 的 DELETE
[0071]C:\abc\* 的 RENAME
[0072]第一個用來保護目錄本身
[0073]后兩個用來保護目錄里的子目錄以及文件
[0074](2)為文件添加規(guī)則
[0075]一個文件,如 c: \def.txt
[0076]則需要加入以下規(guī)則
[0077]C:\abc\* 的 DELETE
[0078]C:\abc\* 的 RENAME
[0079]用來保護文件。
[0080]步驟102:阻塞針對文件和/或目錄的指定操作;
[0081]此處針對文件和/或目錄的指定操作用于針對系統(tǒng)中所有文件的所有操作中,識別出指定操作。作為本實施例的一種優(yōu)選示例,指定操作主要包括刪除DELETE和移動RENAME兩種操作,可以包括文件本身的刪除及移動操作、目錄本身的移動操作、和/或目錄里子目錄及文件的刪除及移動操作。在具體實現(xiàn)中,可以包括下面四種情況:
[0082](I)用戶刪除一個文件,分為直接刪除文件和把文件刪除到回收站。
[0083]用戶直接刪除一個文件會導(dǎo)致刪除DELETE操作,把文件刪除到回收站實際是一個移動RENAME操作;
[0084](2)用戶刪除一個目錄,如果目錄不為空,會對目錄下每一個文件做一個刪除DELETE操作,最后才對目錄進行刪除DELETE操作;
[0085](3)用戶移動一個文件,如果是同盤符的,該移動動作是一個移動RENAME操作;如果是不同盤符的,將文件拷貝到目標(biāo)位置,然后是原位置的文件刪除DELETE操作;
[0086](4)用戶移動一個目錄,如果是同盤符的,該移動動作是目錄的一個移動RENAME操作;如果是不同盤符的,是目錄里每個文件的拷貝和刪除DELETE操作,最后是目錄的移動RENAME操作。
[0087]作為本實施例的一種優(yōu)選示例,文件過濾驅(qū)動通過如下的方式來識別指定操作:文件過濾驅(qū)動會將路徑中帶*的規(guī)則放入一個鏈表中,不帶*的規(guī)則放進一個伸展樹中,當(dāng)系統(tǒng)發(fā)生一個文件動作時,就被拿來跟受保護文件和/或目錄的規(guī)則中的動作類型進行匹配,如果符合匹配,由文件過濾驅(qū)動對動作進行阻塞,中止該動作的繼續(xù)執(zhí)行。
[0088]步驟103:提取所述指定操作針對的文件和/或目錄的路徑;
[0089]由于針對文件和/或目錄的指定操作由文件過濾驅(qū)動阻塞,文件過濾驅(qū)動工作于操作系統(tǒng)的內(nèi)核模式中,獲取的是文件和/或目錄的NT路徑,文件過濾驅(qū)動獲取NT路徑后,需要進行轉(zhuǎn)換,才能與DOS路徑進行比較,其中,DOS路徑就是平常應(yīng)用程序的路徑,比如:C:\MYFILE.CPP, NT路徑即內(nèi)核模式路徑,就是內(nèi)核用來真正訪問設(shè)備文件的路徑,比如 \Device\HarddiskVolumel\MYFILE.CPP,
[0090]在本申請的一種優(yōu)選實施例中,所述步驟103可以包括如下子步驟:
[0091]子步驟Sll:所述文件過濾驅(qū)動獲取所述指定操作針對的文件和/或目錄的NT路徑;
[0092]子步驟S12:所述文件過濾驅(qū)動將所述NT路徑轉(zhuǎn)換成DOS路徑。
[0093]具體而言,所述步驟103可以細分為如下子步驟:
[0094]子步驟Slll:所述文件過濾驅(qū)動獲取所述指定操作針對的文件和/或目錄的NT路徑后,根據(jù)所述NT路徑獲取對應(yīng)設(shè)備路徑的卷信息;
[0095]子步驟S112:所述文件過濾驅(qū)動根據(jù)所述對應(yīng)設(shè)備路徑的卷信息得到該卷對應(yīng)的DOS路徑的盤符名稱;
[0096]子步驟S113:所述文件過濾驅(qū)動將所述盤符名稱拼接起來得到相應(yīng)的DOS路徑。
[0097]例如:
[0098]文件過濾驅(qū)動獲取的指定操作針對的文件和/或目錄的NT路徑為\DeviCe\HarddiskVoIumeI\MYFILE.CPP,得到該NT路徑對應(yīng)的設(shè)備路徑的卷信息為\Device\HarddiskVolumel\,根據(jù)DOS Device與盤符的映射關(guān)系得到該卷信息對應(yīng)的盤符為“C: ”,因此其DOS路徑為C: \MYFILE.CPP。
[0099]步驟104:判斷所述指定操作針對的文件和/或目錄的路徑,是否為受保護文件和/或目錄的路徑;
[0100]在本申請的一種優(yōu)選實施例中,所述步驟104可以用以下方法進行判斷:
[0101]所述文件過濾驅(qū)動將所述指定操作針對的文件和/或目錄的DOS路徑,與所述受保護文件和/或目錄的DOS路徑進行匹配,并將匹配的結(jié)果通知用戶接口 ;所述匹配結(jié)果可以包括,在存在匹配項的情況下,判定所述指定操作針對的文件和/或目錄的路徑為受保護文件和/或目錄的路徑的結(jié)果;以及,在不存在匹配項的情況下,判定所述指定操作針對的文件和/或目錄的路徑不為受保護文件和/或目錄的路徑的結(jié)果。
[0102]例如:c: \abc\a就能匹配用戶設(shè)置的c: \abc\*。
[0103]步驟105:在所述指定操作針對的文件和/或目錄的路徑為受保護文件和/或目錄的路徑時,攔截所述針對文件和/或目錄的指定操作。
[0104]在本申請的一種優(yōu)選實施例中,所述步驟105可以包括如下子步驟:
[0105]子步驟S21:所述用戶接口根據(jù)所述指定操作針對的文件和/或目錄的路徑為受保護文件和/或目錄的路徑的結(jié)果,生成攔截所述針對文件和/或目錄的指定操作的信息,并