專利名稱:資源重復(fù)時的動態(tài)定位方法
技術(shù)領(lǐng)域:
本發(fā)明是一種資源重復(fù)時的動態(tài)定位方法,其主要是一種解決調(diào)用重名資源的應(yīng)用軟件之間發(fā)生沖突的矛盾,且無須修改應(yīng)用軟件的原始資源,且不受資源類型的限制,進而可保證資料穩(wěn)定性的方法。
已知技術(shù)中,當用戶在視窗作業(yè)系統(tǒng)中安裝某個軟件時,該安裝軟件在安裝過程中,對于必需重復(fù)應(yīng)用到已存在系統(tǒng)中的某個或某幾個動態(tài)連結(jié)程序(DLL),皆會詢問用戶是否要覆蓋已存在系統(tǒng)中同樣某段程序地址的舊版本(Old Version),如用戶選擇是,則將舊版本完全覆蓋,并將其中的內(nèi)容更新為新版本的內(nèi)容,然因新版本仍延用舊版本的某段程序地址,故,常會導(dǎo)致先前安裝軟件根本無法使用,從而影響系統(tǒng)中已經(jīng)安裝的其他應(yīng)用軟件,因為這些被應(yīng)用軟件所調(diào)用的動態(tài)連結(jié)程序(DLL)與被修改的動態(tài)連結(jié)程序(DLL)某段程序地址重復(fù);如果用戶選擇否,則新安裝的應(yīng)用軟件就不能正常使用,究其原因,是用戶在視窗作業(yè)中安裝了大量的應(yīng)用軟件時,對于各應(yīng)用程序之間的有相同檔案某段程序地址的動態(tài)連結(jié)程序(DLL),往往會互相覆蓋,而僅存其中一個可運行的程序,例如同時安裝有Office和Visual Basic的用戶來說,只能有一個軟件能夠正常運行,主要由于該等應(yīng)用軟件間所應(yīng)用資源重復(fù)造成的,故,在現(xiàn)有技術(shù)中解決這種調(diào)用資源重名問題的方法有兩種1.當兩個應(yīng)用軟件間有某段程序地址重復(fù)的資源互相調(diào)用的現(xiàn)象發(fā)生時,在安裝這兩個應(yīng)用軟件時,即將它們之間重復(fù)某段程序地址動態(tài)連結(jié)程序(DLL)按照新老兩個版本分別備份起來,當要運行A應(yīng)用軟件時,就調(diào)用A.DLL,當要運行B應(yīng)用軟件時,就將調(diào)用B.DLL,但如此的做法,其缺點是兩個調(diào)用重名資源的應(yīng)用軟件不能同時正常使用,而且無論使用哪一個應(yīng)用軟件,都需要采用手動的方式,調(diào)用不同的動態(tài)連結(jié)程序(DLL),操作十分煩瑣,且無法達到自動化。
2.當A和B兩個應(yīng)用軟件沖突時,分析其可執(zhí)行文件結(jié)構(gòu)(PE格式),使其重新定位到一個資源,如
圖1所示,將A、B兩個應(yīng)用軟件都調(diào)用的A.DLL,修改為一個是C.DLL,另一個仍然是A.DLL,即修改PE格式中的模塊(Module)表,但是采用此種方法也只能是手動操作,無法達成自動化過程,且只能保證修改對象是可執(zhí)行文件(即具有PE、NE、LE格式的文件),因此是為一種靜態(tài)定位的方式,且其操作要修改原文件代碼,并無法保證其他類型的資源的重新定位,從而無法保證程序的穩(wěn)定性。
鑒于上述傳統(tǒng)的應(yīng)用軟件在安裝時所存在的一些缺陷,本發(fā)明提供一種資源重復(fù)時的動態(tài)定位方法。
本發(fā)明的一目的,在提供一種資源重復(fù)時的動態(tài)定位方法,其主要是借由建立相對應(yīng)索引的方式,使某段程序地址重復(fù)的資源能夠達到重新定位,以解決應(yīng)用軟件間調(diào)用某段程序地址相同的資源所發(fā)生沖突的矛盾,進而使該等應(yīng)用軟件可正常運行。
本發(fā)明的另一目的,在提供一種資源重復(fù)時的動態(tài)定位方法,其是一種無須修改應(yīng)用軟件的原始資料,且不受資源類型的限制,而能保證應(yīng)用軟件執(zhí)行的穩(wěn)定性的方法。
本發(fā)明提供的一種資源重復(fù)時的動態(tài)定位方法,該方法包含步驟(1).當應(yīng)用軟件安裝于系統(tǒng)中時,或在系統(tǒng)中的應(yīng)用軟件執(zhí)行時,預(yù)先建立在電腦系統(tǒng)中的攔截模塊,會同時啟動,對該應(yīng)用軟件在安裝或執(zhí)行時,所需要調(diào)用的資源,進行攔截;(2).攔截模塊會對所攔截到的資源進行分析判斷,如所攔截到的資源的某段程序地址與已存在系統(tǒng)中的資源某段程序地址有重復(fù)時,則調(diào)用已建立在系統(tǒng)中的重新定位模塊,對該重復(fù)資源進行重新定位;(3).將該某段程序地址重復(fù)的資源分別以不同某段程序地址儲存于已建立于系統(tǒng)中的動態(tài)重名資料庫中,并建立與該等已分別重新命名的資源相對應(yīng)的索引頭,使其變成可以被完全識別的復(fù)合資源;(4).令該應(yīng)用軟件透過索引頭調(diào)用與其配合的資源,進而能夠正常運行。
為使能對本發(fā)明作更進一步的認識與了解,結(jié)合實施例參考附圖,進一步詳細說明如下
本發(fā)明是一種資源重復(fù)時的動態(tài)定位方法,請參照圖2所示,其主要先在電腦系統(tǒng)中建立攔截模塊,及重新定位模塊后,令應(yīng)用軟件安裝在系統(tǒng)中時,或在系統(tǒng)中的應(yīng)用軟件執(zhí)行時201,在系統(tǒng)中的攔截模塊202,即會同時啟動,對該應(yīng)用軟件在安裝或執(zhí)行時,所需要調(diào)用的資源,于本實施例為動態(tài)連結(jié)程序(DLL,Dynamic Link Library),進行攔截,并對攔截到的資源進行分析判斷,如該資源與系統(tǒng)中的其它應(yīng)用軟件所需的資源某段程序地址未重覆時,則直接調(diào)用該資源供該應(yīng)用軟件使用;如發(fā)現(xiàn)有該資源的某段程序地址與系統(tǒng)中的其它應(yīng)用軟件所需的資源某段程序地址有重復(fù)時,則調(diào)用在系統(tǒng)中的重新定位模塊203,對該重復(fù)資源進行重新定位,將該某段程序地址重復(fù)的資源分別以不同某段程序地址儲存于已建立于系統(tǒng)中的動態(tài)重名資料庫中,并建立與該等已分別重新命名的資源相對應(yīng)的索引頭,使其變成可以被完全識別的復(fù)合資源,而使該應(yīng)用軟件以及其它應(yīng)用軟件可透過索引頭調(diào)用與其配合的資源204,進而能夠正常運行;反之,電腦系統(tǒng)亦可調(diào)用經(jīng)重新定位的資源,與攔截模塊所攔截到的資源加以比較判斷,使在系統(tǒng)中的應(yīng)用軟件可透過與該等資源相連結(jié)的索引頭,找到與其相配合的資源,進而調(diào)用該資源,如此可知,本發(fā)明是為一可雙向操作的方法。
至于,有關(guān)上述的攔截模塊及重新定位模塊進行時的相關(guān)過程,進一步詳細說明如下請參照圖3所示,其中,電腦系統(tǒng)在對需要重新定位重名資源的應(yīng)用軟件,而啟動本發(fā)明的攔截模塊進行攔截301時,主要是先透過其中的掛鉤函數(shù)值(Hook)的連結(jié),而使攔截模塊可直接進入該應(yīng)用軟件中后,進而控制該應(yīng)用軟件302后,再透過電腦系統(tǒng)中的中央處理單元,至預(yù)先建立于電腦系統(tǒng)的動態(tài)重名資料庫中,調(diào)用儲存其中已經(jīng)重新定位模塊重新定位完成的資源303,并經(jīng)由電腦系統(tǒng)中的中央處理單元判斷由該動態(tài)重名資料庫中的資源,是否有該應(yīng)用軟件所需的資源304,如有,則尋找與該資源相對應(yīng)的資源305,并加以調(diào)用;如找不到符合要求的資源,則電腦系統(tǒng)會令攔截模塊退出該應(yīng)用軟件,并釋放對該應(yīng)用軟件的控制權(quán)306,使該應(yīng)用軟件能夠繼續(xù)進行后續(xù)的操作。
另,請參照圖4所示,當本發(fā)明的攔截模塊找尋到相對應(yīng)的資源時,本發(fā)明的重新定位模塊會讀取該資源并加以控制401,并判斷該資源,是否已存在預(yù)先建立于電腦系統(tǒng)中的動態(tài)重名資料庫中402,如果該動態(tài)重名資料庫中并未有該資源存在,則該重新定位模塊即會釋放對資料的控制,使調(diào)用該資源的應(yīng)用軟件可在電腦系統(tǒng)配合下,調(diào)用所需的資源,繼續(xù)進行后續(xù)的操作403。
反之,如果該資源已存在于動態(tài)重名資料庫中,則判斷其是否已有某段程序地址相同的資源404,如有,則讀取與該資源相對應(yīng)的索引頭(IndexHead)的有關(guān)數(shù)據(jù),找到所需的資源,從而對該資源進行定位的操作405,以及使調(diào)用該資源的應(yīng)用軟件的操作可順利進行406;如不相同,則建立與該資源相對應(yīng)的索引頭407,并將該資源與索引頭結(jié)合在一起形成一復(fù)合資源408(如圖5所示)后,儲存于動態(tài)重名資料庫,然后借由索引頭進行對與其相對應(yīng)的資源的定位操作405,以及使調(diào)用該資源的應(yīng)用軟件的操作可順利進行406。
為使能更進一步了解本發(fā)明,茲舉一具體實施例,并說明如下首先,請參照圖5所示,當在視窗作業(yè)系統(tǒng)中有兩個不同應(yīng)用軟件(例如VC6.0及VC5.0),在執(zhí)行編譯的過程中,經(jīng)本發(fā)明攔截模塊攔截后,得知該等兩個應(yīng)用軟件會同時用到一個MFC42D.DLL資源時,本發(fā)明即會借由重新定位模塊,將該重復(fù)用到的資源(MFC42D.DLL)分別命名為A5.DLL和A6.DLL,其中A5.DLL表示被VC5.0所調(diào)用的動態(tài)資源,而V6.DLL表示被VC6.0所調(diào)用的動態(tài)資源,當需要在VC5.0環(huán)境中編譯程序時,則在如圖5所示,由與A5.DLL相對應(yīng)的索引頭(Index Head)中讀取A5.DLL,當需要在VC6.0環(huán)境下編譯程序時,則在如圖5所示,由與A6.DLL相對應(yīng)的索引頭(Index Head)中讀取A6.DLL,這樣就可以使調(diào)用相同某段程序地址DLL的兩個應(yīng)用程序可分別調(diào)用其所需的DLL。
綜上所述,本發(fā)明的資源重復(fù)時的動態(tài)定位方法,不但可改進已用技術(shù)的各種缺點,且在使用上能增進功效,合于實用,充份符合發(fā)明專利的要件,實為一理想的發(fā)明,故申請人爰依專利法的規(guī)定,提出發(fā)明專利申請,并懇請早日賜準本案專利,至感德便。
權(quán)利要求
1.一種資源重復(fù)時的動態(tài)定位方法,其特征是該方法包含步驟(1).當應(yīng)用軟件安裝于系統(tǒng)中時,或在系統(tǒng)中的應(yīng)用軟件執(zhí)行時,預(yù)先建立在電腦系統(tǒng)中的攔截模塊,會同時啟動,對該應(yīng)用軟件在安裝或執(zhí)行時,所需要調(diào)用的資源,進行攔截;(2).攔截模塊會對所攔截到的資源進行分析判斷,如所攔截到的資源的某段程序地址與已存在系統(tǒng)中的資源某段程序地址有重復(fù)時,則調(diào)用已建立在系統(tǒng)中的重新定位模塊,對該重復(fù)資源進行重新定位;(3).將該某段程序地址重復(fù)的資源分別以不同某段程序地址儲存于已建立于系統(tǒng)中的動態(tài)重名資料庫中,并建立與該等已分別重新命名的資源相對應(yīng)的索引頭,使其變成可以被完全識別的復(fù)合資源;(4).令該應(yīng)用軟件透過索引頭調(diào)用與其配合的資源,進而能夠正常運行。
2.如權(quán)利要求1所述的資源重復(fù)時的動態(tài)定位方法,其特征是攔截模塊會對所攔截到的資源進行分析判斷,如該資源與系統(tǒng)中的其它應(yīng)用軟件所需的資源某段程序地址未重復(fù)時,則使直接調(diào)用該資源供該應(yīng)用軟件使用。
3.如權(quán)利要求1所述的資源重復(fù)時的動態(tài)定位方法,其特征是攔截模塊進行攔截時,主要是先透過其中的掛鉤函數(shù)值(Hook)的連結(jié),而直接控制正在攔截的應(yīng)用軟件后,再透過中央處理單元至儲存其中且經(jīng)重新定位模塊重新定位完成的資源找尋,并經(jīng)由中央處理單元判斷后,如為所需的資源,則調(diào)用與該資源相對應(yīng)的模塊。
4.如權(quán)利要求3所述的資源重復(fù)時的動態(tài)定位方法,其特征是攔截模塊進行攔截時,如找不到符合要求的資源,則電腦系統(tǒng)會令攔截模塊退出所控制的應(yīng)用軟件,并釋放對該應(yīng)用軟件的控制權(quán),使該應(yīng)用軟件能夠繼續(xù)進行后續(xù)的操作。
5.如權(quán)利要求1所述的資源重復(fù)時的動態(tài)定位方法,其特征是重新定位模塊會對所控制的資源,加以判斷其是否已存在預(yù)先建立于電腦系統(tǒng)中的動態(tài)重名資料庫中,如果該資源已存在于動態(tài)重名資料庫中,則進一步判斷是否已有某段程序地址相同的資源,如相同,則讀取與該資源相對應(yīng)的索引頭(Index Head)的有關(guān)數(shù)據(jù),找到所需的資源,從而對該資源進行定位的操作,使調(diào)用該資源的應(yīng)用軟件的操作可順利進行。
6.如權(quán)利要求5所述的資源重復(fù)時的動態(tài)定位方法,其特征是重新定位模塊對所控制的資源,判斷其是否已存在建立于電腦系統(tǒng)中的動態(tài)重名資料庫中時,如該動態(tài)重名資料庫中并未有該資源存在,則該重新定位模塊即會釋放對資源的控制,使調(diào)用該資源的應(yīng)用軟件可在電腦系統(tǒng)配合下,調(diào)用所需的資源,繼續(xù)進行后續(xù)的操作。
7.如權(quán)利要求5所述的資源重復(fù)時的動態(tài)定位方法,其特征是重新定位模塊,如在動態(tài)重名資料庫中未得到有某段程序地址相同的資源,則會建立與該資源相對應(yīng)的索引頭,并將該資源與索引頭結(jié)合在一起形成一復(fù)合資源,然后借由索引頭進行對與其相對應(yīng)的資源的定位操作,使調(diào)用該資源的應(yīng)用軟件的操作可順利進行。
全文摘要
一種資源重復(fù)時的動態(tài)定位方法,其主要將系統(tǒng)中的資源重新定位,而在應(yīng)用軟件安裝過程中或應(yīng)用軟件執(zhí)行時,借由攔截模塊,對所調(diào)用的資源進行攔截,再對其進行分析,如該資源與原本存在系統(tǒng)中的應(yīng)用軟件所用的資源未重覆時,則直接調(diào)用該資源,如有重復(fù)時,則借由重新定位模塊對重復(fù)資源進行重新定位,而建立分別與該等重新定位的資源相對應(yīng)的索引頭,并使該應(yīng)用軟件及其它應(yīng)用軟件可透過索引頭,調(diào)用與其配合的資源,進而能夠正常運行。
文檔編號G06F9/445GK1310387SQ0010237
公開日2001年8月29日 申請日期2000年2月21日 優(yōu)先權(quán)日2000年2月21日
發(fā)明者林光信, 陳玄同, 李鵬 申請人:英業(yè)達股份有限公司