專利名稱:保護(hù)Windows 9X系統(tǒng)安全關(guān)機(jī)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種安全關(guān)機(jī)的方法,特別是一種在Windows 9x系統(tǒng)中執(zhí)行關(guān)機(jī),并且保護(hù)檔案或數(shù)據(jù)不致?lián)p害或丟失的關(guān)機(jī)方法。
在目前信息化的時(shí)代中,計(jì)算機(jī)的應(yīng)用愈來愈普及,甚至有走向家庭化的趨勢(shì),這也意味著操作計(jì)算機(jī)的使用者從以往的專業(yè)人士逐漸地遍及至一般的社會(huì)大眾。由于一般公眾在使用計(jì)算機(jī)的時(shí)候,尤其是剛開始使用的時(shí)期,往往缺乏正確操作計(jì)算機(jī)的知識(shí),因此常會(huì)導(dǎo)致計(jì)算機(jī)死機(jī)(當(dāng)機(jī))或其他的問題發(fā)生。
此外,操作系統(tǒng)為計(jì)算機(jī)硬件與使用者間的溝通界面,尤其是一開始的開機(jī)操作與最后的關(guān)機(jī)操作,都是經(jīng)由它才能順利完成,因此可想而知其扮演著非常重要的角色。目前一般的個(gè)人計(jì)算機(jī)中,通常以Windows 9x系統(tǒng)(例如Windows 95或Windows 98)做為其主要的操作系統(tǒng);但是,Windows 9x系統(tǒng)在設(shè)計(jì)上并沒有像Windows NT系統(tǒng)那樣,提供對(duì)系統(tǒng)關(guān)機(jī)時(shí)的數(shù)據(jù)保護(hù),也就是說,當(dāng)應(yīng)用程序未執(zhí)行結(jié)束之前,由于各種人為或不明的因素造成計(jì)算機(jī)死機(jī)或是不小心而異常關(guān)機(jī),很容易會(huì)造成使用者未存儲(chǔ)的數(shù)據(jù)丟失,以及應(yīng)用程序無(wú)法正常完成關(guān)閉操作。即使像微軟(Microsoft)開發(fā)的某些應(yīng)用軟件,如Office系列,可以在異常關(guān)機(jī)重啟時(shí)自動(dòng)恢復(fù)上次未存儲(chǔ)的數(shù)據(jù),但是對(duì)于大多數(shù)其他公司開發(fā)的應(yīng)用軟件,卻無(wú)法做到類似的保護(hù)。
有鑒于此,本發(fā)明的目的是設(shè)計(jì)一種在以指令方式下達(dá)開機(jī)命令的情形下,保護(hù)Windows 9x系統(tǒng)中所有應(yīng)用程序的安全,且在儲(chǔ)存完數(shù)據(jù)后再完成關(guān)機(jī)操作的方法。
根據(jù)上述本發(fā)明的目的,提供的一種保護(hù)Windows 9x系統(tǒng)安全關(guān)機(jī)的方法,是利用一攔截模塊常駐于系統(tǒng)存儲(chǔ)器中,以隨時(shí)響應(yīng)出現(xiàn)關(guān)機(jī)命令的情形發(fā)生,而攔截關(guān)機(jī)函數(shù)ExitWindows使其暫緩執(zhí)行其內(nèi)容;再利用一程序關(guān)閉模塊,對(duì)系統(tǒng)中每一執(zhí)行中的應(yīng)用程序發(fā)出關(guān)閉命令,并備份尚未儲(chǔ)存的資料或數(shù)據(jù);最后再通過一重新啟動(dòng)模塊,恢復(fù)關(guān)機(jī)函數(shù)Exit Windows的原始地址,并重新啟動(dòng)計(jì)算機(jī)。
為使本發(fā)明的上述和其他目的、特征、和優(yōu)點(diǎn)能更明顯易懂,下文特舉一較佳實(shí)施例,并結(jié)合附圖,作詳細(xì)說明如下。
圖1示出了本發(fā)明的模塊功能方?jīng)Q圖;圖2示出了本發(fā)明的攔截模塊流程圖;圖3繪示出了本發(fā)明的程序關(guān)閉模塊流程圖;以及圖4示出了本發(fā)明的重新啟動(dòng)模塊流程圖。
本發(fā)明是應(yīng)用在使用者以下達(dá)指令的方式要求計(jì)算機(jī)系統(tǒng)關(guān)機(jī)再重新開機(jī)的情形下,例如使用者無(wú)意中或在計(jì)算機(jī)死機(jī)時(shí),以同時(shí)按下Alt+Ctrl+Del三個(gè)按鍵而執(zhí)行非正常的關(guān)機(jī)命令,或者是使用者安裝某些軟件或更改某些設(shè)定,導(dǎo)致安裝程序或是計(jì)算機(jī)系統(tǒng)要求重新開機(jī)等等。通常在上述情況下,Windows 9x操作系統(tǒng)會(huì)直接調(diào)用關(guān)機(jī)函數(shù)ExitWindows,此時(shí)雖然亦可以完成關(guān)機(jī)操作,但是這種情況下的關(guān)機(jī)操作,系統(tǒng)不會(huì)自動(dòng)將未儲(chǔ)存的數(shù)據(jù)備份,若使用者亦沒有先作好儲(chǔ)存的工作,則會(huì)造成數(shù)據(jù)的丟失。
因此,本發(fā)明提供一種可以補(bǔ)救的方法,其功能模塊圖如圖1所示,圖中虛線所示部分為通常進(jìn)行關(guān)機(jī)操作后,Windows 9x操作系統(tǒng)直接調(diào)用關(guān)機(jī)函數(shù)ExitWindows 102執(zhí)行關(guān)機(jī)的運(yùn)行過程,而實(shí)線部分則為本發(fā)明所提供的方法。首先,本發(fā)明利用一攔截程序,例如一攔截模塊103常駐于系統(tǒng)存儲(chǔ)器中,以便在使用者執(zhí)行關(guān)機(jī)操作后,自動(dòng)攔截系統(tǒng)本身的關(guān)機(jī)函數(shù)ExitWindows暫緩其中的關(guān)機(jī)操作,然后趁此空閑執(zhí)行本發(fā)明的程序關(guān)閉模塊104和重新啟動(dòng)模塊105,以模擬操作系統(tǒng)正常的關(guān)機(jī)和重啟動(dòng)作,并且于此同時(shí),向執(zhí)行中的應(yīng)用程序101發(fā)出一OP空操作請(qǐng)求,以保證該應(yīng)用程序101能夠正常運(yùn)行,而不致受到本發(fā)明所提供的關(guān)機(jī)和重啟處理的影響。
至于本發(fā)明中的攔截模塊103的操作流程,請(qǐng)參照?qǐng)D2。首先,本發(fā)明將攔截模塊103常駐于系統(tǒng)存儲(chǔ)器中,使其時(shí)時(shí)在存儲(chǔ)器中查詢關(guān)機(jī)函數(shù)ExitWindows的原始地址(步驟201),并且判斷是否找到(步驟202),如果沒有找到,則表示此時(shí)使用者未調(diào)用關(guān)機(jī)函數(shù)ExitWindows,因此不須作任何處理,程序結(jié)束;如果找到了,則設(shè)定自定義的退出函數(shù)為RealExitWindows,并為其在存儲(chǔ)器中定義新地址(步驟203),并用上述的新地址替換原來ExitWindows函數(shù)的原始地址(步驟204)。因此,當(dāng)使用者進(jìn)行關(guān)機(jī)操作時(shí),實(shí)際讀取的是本發(fā)明所提供的自定義函數(shù)RealExitWindows,從而讓使用者的非正常關(guān)機(jī)操作被攔截下來,而能夠執(zhí)行本發(fā)明所提供的后續(xù)操作,讓使用者在非正常關(guān)機(jī)時(shí)未存儲(chǔ)的資料與數(shù)據(jù),能夠被自動(dòng)備份,不會(huì)因此而遺失。
至于上述的后續(xù)操作請(qǐng)參照?qǐng)D3,圖3為本發(fā)明的程序關(guān)閉模塊104的流程圖。當(dāng)此模塊啟動(dòng)后,首先掃描系統(tǒng)程序數(shù)據(jù)庫(kù)(ProcessDatabase,以下簡(jiǎn)稱PDB)(步驟301),并且讀取PDB表中的第一項(xiàng)內(nèi)容(步驟302),判斷該項(xiàng)內(nèi)容所記載的是否為系統(tǒng)過程(System Process)(步驟303),如果是系統(tǒng)過程,則表示其為系統(tǒng)操作,因此無(wú)須攔截而備份數(shù)據(jù),只要繼續(xù)讀取PDB表的下一項(xiàng)內(nèi)容(步驟304),并重復(fù)順序進(jìn)行上述的判斷與步驟即可;如果PDB表中的第一項(xiàng)不是記載關(guān)于系統(tǒng)過程的內(nèi)容,則判斷其是否為執(zhí)行中的應(yīng)用程序(步驟305),假設(shè)不是執(zhí)行中的應(yīng)用程序,則同樣繼續(xù)讀取PDB表的下一項(xiàng)內(nèi)容(步驟304),并重復(fù)順序進(jìn)行上述的判斷與步驟;如果該項(xiàng)內(nèi)容是執(zhí)行中的應(yīng)用程序,則向該應(yīng)用程序發(fā)出關(guān)閉的命令(步驟306),然后備份關(guān)機(jī)時(shí)使用者未存儲(chǔ)的數(shù)據(jù)和資料(步驟307)。此外,本發(fā)明更進(jìn)一步判斷是否完成上述應(yīng)用程序的關(guān)閉過程(步驟308),如果還未關(guān)閉,則詢問使用者是否要終止目前應(yīng)用程序的操作(步驟310),如果要終止目前的操作,則再向該應(yīng)用程序發(fā)出關(guān)閉命令(步驟306),然后再依序上述備份的操作(步驟307),如果不終止當(dāng)前操作,則關(guān)閉本發(fā)明的過程(步驟311),程序結(jié)束;但是,如果判斷結(jié)果是已完成上述關(guān)閉過程(步驟308),則判斷該應(yīng)用程序是否為PDB表的最后一項(xiàng)過程(步驟309),如果是,則表示PDB表中的所有過程已經(jīng)處理完畢,則可以結(jié)束本模塊并重新啟動(dòng)計(jì)算機(jī),如果該過程不是PDB表中的最后一項(xiàng),則繼續(xù)讀取PDB表中的下一項(xiàng)內(nèi)容(步驟304),然后再重復(fù)依序進(jìn)行前述的判斷和處理。
請(qǐng)參照?qǐng)D4,圖4為本發(fā)明的重新啟動(dòng)模塊105的流程圖,該模塊可以恢復(fù)對(duì)應(yīng)用程序接口(API)的攔截,并可調(diào)用系統(tǒng)原始函數(shù)來進(jìn)行計(jì)算機(jī)的重啟操作,其具體操作步驟如下首先恢復(fù)系統(tǒng)關(guān)機(jī)函數(shù)ExitWinows在存儲(chǔ)器中的原始地址(步驟401),然后調(diào)用執(zhí)行該關(guān)機(jī)函數(shù)ExitWindows(步驟402),并重新啟動(dòng)計(jì)算機(jī)(步驟403),之后便將計(jì)算機(jī)系統(tǒng)的控制權(quán)交還給Windowx9x操作系統(tǒng),然后繼續(xù)正常的開機(jī)過程。
本發(fā)明藉由攔截關(guān)機(jī)函數(shù)ExitWindows,使得計(jì)算機(jī)在不正常關(guān)機(jī)時(shí),不會(huì)立即進(jìn)行關(guān)機(jī)操作,而是先行備份關(guān)機(jī)時(shí)未來得及儲(chǔ)存的資料與數(shù)據(jù),因此,本發(fā)明可以提供安全關(guān)機(jī)的保護(hù)操作,讓使用者的數(shù)據(jù)不會(huì)因不正常關(guān)機(jī)而丟失。
雖然本發(fā)明已以一較佳實(shí)施例披露如上,然其并非用以限定本發(fā)明,本領(lǐng)域技術(shù)人員,在不脫離本發(fā)明的精神和范圍的前提下,可作若干更動(dòng)與潤(rùn)飾,因此本發(fā)明的保護(hù)范圍以后附的權(quán)利要求所界定。
權(quán)利要求
1.一種保護(hù)Windows 9x系統(tǒng)安全關(guān)機(jī)的方法,用于當(dāng)計(jì)算機(jī)非正常關(guān)機(jī)時(shí),保護(hù)尚未儲(chǔ)存的資料或數(shù)據(jù),該方法包括有攔截該系統(tǒng)本身的一關(guān)機(jī)函數(shù)ExitWindows,并且另以一自定義的退出函數(shù)代替;掃描該系統(tǒng)中的一過程數(shù)據(jù)庫(kù)(Process Database),并依據(jù)該過程數(shù)據(jù)庫(kù)中項(xiàng)目的內(nèi)容,對(duì)執(zhí)行中的應(yīng)用程序發(fā)出關(guān)閉命令,以儲(chǔ)存計(jì)算機(jī)非正常關(guān)機(jī)時(shí)所未儲(chǔ)存的數(shù)據(jù)或資料;以及執(zhí)行該關(guān)機(jī)函數(shù)ExitWindows,并重新啟動(dòng)計(jì)算機(jī)系統(tǒng)。
2.如權(quán)利要求1所述的保護(hù)Windows 9x系統(tǒng)安全關(guān)機(jī)的方法,其中攔截該關(guān)機(jī)函數(shù)ExitWindows的執(zhí)行內(nèi)容還包括有以下步驟查詢?cè)撽P(guān)機(jī)函數(shù)ExitWindows在存儲(chǔ)器中的原始地址;定義該退出函數(shù)在存儲(chǔ)器中的新地址;以及用該新地址替換該原始地址。
3.如權(quán)利要求1所述的保護(hù)Windows 9x系統(tǒng)安全關(guān)機(jī)的方法,其中該自定義的退出函數(shù)名稱為RealExitWindows,用于暫時(shí)取代該關(guān)機(jī)函數(shù)ExitWindows,并于此時(shí)執(zhí)行備份檔案數(shù)據(jù)的操作。
4.如權(quán)利要求1所述的保護(hù)Windows 9x系統(tǒng)安全關(guān)機(jī)的方法,其中在該系統(tǒng)的存儲(chǔ)器中常駐有一攔截程序,以隨時(shí)監(jiān)測(cè)并攔截該關(guān)機(jī)函數(shù)ExitWindows。
5.如權(quán)利要求1所述的保護(hù)Windows 9x系統(tǒng)安全關(guān)機(jī)的方法,其中藉由一程序關(guān)閉模塊,來執(zhí)行關(guān)閉應(yīng)用程序與儲(chǔ)存數(shù)據(jù)的步驟。
6.如權(quán)利要求1所述的保護(hù)Windows 9x系統(tǒng)安全關(guān)機(jī)的方法,其中若該過程數(shù)據(jù)庫(kù)(Process Database)中項(xiàng)目的內(nèi)容為系統(tǒng)過程時(shí),則跳過不予處理。
7.如權(quán)利要求1所述的保護(hù)Windows 9x系統(tǒng)安全關(guān)機(jī)的方法,其中還包含有下列步驟判斷是否完成關(guān)閉該執(zhí)行中的應(yīng)用程序;根據(jù)該判斷結(jié)果,詢問使用者是否終止操作該應(yīng)用程序;以及根據(jù)該詢問結(jié)果,向該應(yīng)用程序再發(fā)出一關(guān)閉命令。
8.如權(quán)利要求7所述的保護(hù)Windows 9x系統(tǒng)安全關(guān)機(jī)的方法,其中若該詢問結(jié)果為使用者不要終止操作該應(yīng)用程序時(shí),則關(guān)閉本發(fā)明過程,結(jié)束程序。
9.如權(quán)利要求1所述的保護(hù)Windows 9x系統(tǒng)安全關(guān)機(jī)的方法,其中藉由恢復(fù)該關(guān)機(jī)函數(shù)ExitWindows在存儲(chǔ)器中的原始地址,而重復(fù)執(zhí)行該關(guān)機(jī)函數(shù)ExitWindows。
10.如權(quán)利要求1所述的保護(hù)Windows 9x系統(tǒng)安全關(guān)機(jī)的方法,其中還增加向該應(yīng)用程序發(fā)出一OP空操作請(qǐng)求的步驟,以確認(rèn)該應(yīng)用程序能夠正常運(yùn)作。
全文摘要
本發(fā)明為一種保護(hù)Windows 9x系統(tǒng)安全關(guān)機(jī)的方法,其主要是通過攔截Windows 9x的關(guān)機(jī)函數(shù)ExitWindows,而使得計(jì)算機(jī)暫緩執(zhí)行關(guān)機(jī)操作,再趁此時(shí)間對(duì)執(zhí)行中的應(yīng)用程序發(fā)出關(guān)閉的消息,并且備份使用者尚未儲(chǔ)存的資料或數(shù)據(jù),然后再啟動(dòng)計(jì)算機(jī)進(jìn)行安全關(guān)機(jī)的操作,如此一來,即可避免在不正常關(guān)機(jī)的情形之下,所造成數(shù)據(jù)丟失或應(yīng)用程序出錯(cuò)的問題。
文檔編號(hào)G06F17/30GK1369778SQ0110460
公開日2002年9月18日 申請(qǐng)日期2001年2月15日 優(yōu)先權(quán)日2001年2月15日
發(fā)明者陳玄同, 林光信 申請(qǐng)人:英業(yè)達(dá)股份有限公司