專利名稱::用于在應用程序的預定數量的執行方法之間選擇的方法
技術領域:
:本發明涉及用于執行應用程序的方法,具體而言,涉及用于在應用程序的預定數量的執行方法之間進行選擇的方法。
背景技術:
:現代企業環境的管理員在提供對應用程序的訪問時可能面對很多挑戰。其中的一項挑戰涉及向最終執行應用的環境提供并維護(即更新)應用的問題,因為大量的機器具有不同的執行環境,所述的不同的執行環境又具有對多個公司網的不同類型的訪問。第二項挑戰涉及在目標機上提供某種環境,從而在不干擾其他可能存在抵觸要求的應用程序的情況下實現應用程序的執行,或者使應用程序能夠在并非被設計為運行所述應用程序的環境下得到執行(即,使單用戶應用在多用戶操作系統中隔離運行)。大量應用程序的提供和更新給信息技術(IT)部門帶來了很多困擾。一種困擾包括怎樣為不同的執行環境提供應用,所述執行環境包括個人計算機(執行很多種不同類型的操作系統)、服務器、刀片機或虛擬機。另一種困擾包括如何更新已經交付的應用。對于更新頻繁的企業應用而言,在不同類型的目標機上安裝應用的升級版本可能即昂貴又耗時。另一項挑戰是針對訪問請求進行集中開發和應用的企業策略。典型的企業環境中的另一項困擾是在采用了大量的具有不同要求的應用的環境中應用之間的兼容性。IT部門在向支持不同執行環境的目標機部署應用程序時,以及在每一應用程序具有不同的、可能存在抵觸的安裝要求的情況下執行可用應用程序的不同子集時可能面臨很多挑戰。確保與各種企業策略的順應性又給典型企業環境的管理員帶來了更多的困擾。針對各個應用,對目標機上的具體應用程序進行評估和授權可能是不切實際的。我們希望能夠獲得一種集中式系統,其能夠在安裝或執行具體的應用程序之前實現目標機的自動評估,以判斷與(例如)安全策略或專利使用許可的順應性。還希望獲得這樣一種方法,其能將應用一次性安裝到代表性目標機上,并且夠響應于具體目標機的應用訪問請求將應用交付給各種目標環境。我們還希望使策略的集中應用能夠提供對應用的水平不一的訪問,包括響應于應用程序的要求或本地機的特征來選擇執行應用的不同方法。
發明內容本發明涉及一種用于在應用程序的預定數量執行方法之間進行選擇的方法。在一個方面中,本發明涉及一種通過遠程機進行選擇的方法,一種執行應用程序的方法。接收與本地機關聯的信任狀(credential)。響應于所接收的信任狀提供本地機可用的多個應用的枚舉,接收請求以執行被枚舉的應用。響應于策略選擇執行被枚舉的應用的預定數量的方法之一,所述預定數量的方法包括用于所述被枚舉的應用的應用流傳輸的方法。在一個實施例中,所述方法包括選擇將所述被枚舉的應用流傳輸到所述本地機的方法。在另一個實施例中,所述方法包括選擇用于將被枚舉的應用流傳輸到遠程機的方法,舉的應用而產生的應用輸出數據。在另一個方面中,用于在本地對文件元數據請求做出響應而無須從遠程位置下載文件的方法包括從遠程機接收表示所述遠程機存儲的應用程序的目錄結構以及與包括所存儲應用程序的每個文件相關聯的元數據。存儲所述目錄和元數據。接收至少一個訪問與目錄結構中特定文件相關聯的元數據的請求。使用所存儲的元數據以對至少一個請求做出響應。在一個實施例中,接收枚舉與本地應用程序相關聯的目錄結構的請求。用所存儲的目錄結構對枚舉請求做出響應。在另一個實施例中,元數據包括文件的文件名和文件的別名(alternatename)之間的映射。在另一個實施例中,利用所接收的元數據滿足標識目錄結構中的根節點的請求。在又一個實施例中,接收確定本地是否有包括所存儲的應用程序的文件拷貝的請求。訪問所存儲的元數據并給出偽裝指示,表示本地沒有文件拷貝。在又一個方面中,用于在本地對文件元數據請求做出響應而無須從遠程位置下栽文件的系統包括目錄結構、高速緩沖存儲器元件和文件系統過濾器驅動程序。目錄結構標識與至少一個應用程序相關聯的多個文件并包括與所述多個文件中的至少一個相關聯的文件元數據,所述多個文件中的至少一個駐留在遠程機上。高速緩沖存儲器元件存儲目錄結構。文件系統過濾器驅動程序攔截訪問與至少一個遠程存儲的文件相關聯的元數據的請求,訪問高速緩沖存儲器元件并利用所存儲的目錄結構對至少一個請求做出響應。在一個實施例中,所述目錄結構包括與至少一個應用程序相關聯的多個文件,所述多個文件駐留在遠程機上。在另一個實施例中,文件元數據包括用于對標識目錄結構中的根節點的請求做出響應的信息。在又一個方面中,用于訪問與應用相關聯的目錄結構中的文件的方法包括攔截應用訪問文件的請求的步驟。將該請求重定向到第一隔離環境。做出第一隔離環境中不存在所請求文件的判斷。響應于在包括駐留在遠程機上的多個應用文件的目錄結構枚舉中標識該文件的判斷,將所述請求重定向到第二隔離環境。響應于所述第二隔離環境不含所述文件且在枚舉中標識該文件的判斷,從文件服務器檢索所請求的文件。在一個實施例中,請求訪問文件的應用是能夠接收流傳輸的應用文件的應用。在另一個實施例中,請求訪問文件的應用是本地機的用戶所請求的應用。在又一個實施例中,在第一隔離環境中存儲所請求的文件。在又一個實施例中,在第二隔離環境中存儲所請求的文件。在一些實施例中,攔截應用訪問可執行文件的請求。在其他實施例中,拄截應用訪問文件的請求,在本地機上執行所述應用的一部分。在一個實施例中,攔截由第三隔離環境中執行的另一應用提出的請求。響應于在所述枚舉中枚舉該文件且所述第二隔離環境不含所述文件的判斷,將所述請求重定向到所述第二隔離環境。第二隔離環境為應用提供對文件的訪問。在另一個實施例中,該文件為可執行文件。在一些實施例中,多個應用文件包括第二應用。在其他實施例中,該應用是應用流傳輸客戶端。在其他實施例中,應用流傳輸客戶端請求并執行可執行文件以在本地機上執行第二應用的實例。在一個方面中,一種用于訪問與應用相關聯的目錄結構中的文件的系統包括第一隔離環境、第二隔離環境、過濾器驅動程序和收發器。在第一隔離環境中,應用執行并請求訪問文件。第二隔離環境存儲與安裝在遠程機上的多個應用文件相關聯的目錄結構的枚舉。過濾器驅動程序響應于在目錄結構枚舉中標識該文件的判斷,攔截訪問文件的請求,將該請求重定向到第一隔離環境,判定所請求的文件不存在于第一隔離環境中并將該請求重定向到第二隔離環境。與所述過濾器驅動程序通信的收發器,所述收發器響應于所述過濾器驅動程序做出的所述第二隔離環境不含所述文件且在所述枚舉中標識該文件的判斷,向文件服務器發送所述重定向的請求并響應于所述請求接收包括所請求的文件的流。在一個方面中,一種用于由本地機訪問包括應用程序的多個文件的方法包括本地機接收包括訪問信息的文件的步驟,該訪問信息用于訪問多個應用文件并執行能夠接收應用流的第一客戶端。響應于所述文件檢索所述多個應用文件的標識。響應于所述文件檢索執行所述多個應用所需的至少一個特征。做出本地機是否包括至少一個特征的判斷。響應于所述本地機缺少所述至少一個特征的判斷執行第二客戶端,所述第二客戶端請求在遠程機上執行所述多個應用文件。在一個實施例中,響應于所檢索的多個應用文件的標識檢索至少一個特征。在另一個實施例中,響應于對本地機的評估做出本地機是否包括至少一個特征的判斷。在又一個實施例中,本地機評估本地機。在又一個實施例中,響應于被評估的本地機缺少接收多個應用文件以在本地執行的授權這一判斷,做出決定,執行第二客戶端而非第一客戶端。在另一個方面中,一種用于訪問包括應用程序的多個文件的系統包括文件、第一客戶端和第二客戶端。該文件包括用于訪問多個應用文件的訪問信息。能夠接收應用流的第一客戶端接收所述文件、響應至少二個特征,并判斷所述本地機是否包括所述至少l個特征。第二客戶端響應于所述第一客戶端做出的所述本地機缺少所述至少一個特征的判斷從第一客戶端接收該文件并請求在遠程機上執行所述多個應用文件。在一個實施例中,第一客戶端評估本地機以判斷本地機是否包括至少一個特征。在另一個實施例中,第一客戶端向本地機采用策略以做出判斷。在又一個實施例中,第二客戶端接收在遠程機上執行多個應用文件所產生的應用輸出數據。在又一個實施例中,第二客戶端包括在本地機上顯示從遠程機接收的應用輸出數據的功能。通過下文的詳細說明和附圖,本發明的這些和其他方面將變得顯而易見,其中,所述附圖的作用在于對本發明進行舉例說明,而不是限制本發明,其中圖1A是示出了適于實現本發明的示范性實施例的環境的方框圖;圖1B和1C是示出了可以結合本發明使用的計算機的實施例的方框圖;圖1D是示出了利用本發明的服務器農場(serverfarm)的實施例的方框圖;圖IE是示出了用于通過在web服務目錄中公布GUI來提供可以為本地機所使用的多個應用程序的系統的一個實施例的方框圖;圖2是示出了選擇應用程序的執行方法所采用的步驟的一個實施例的流程圖;圖3A是示出了本地機通過萬維網(WorldwideWeb)啟動執行程序鄰域應用的一個實施例的方框圖;圖3B是示出了本地機利用web服務目錄訪問枚舉的應用程序所采取的步驟的一個實施例的流程圖;圖4A是為本地機提供對應用程序的基于策略的訪問的網絡實施例的方框圖;圖4B是示出了策略引擎更詳細實施例的方框圖;圖4C是示出了策略引擎基于所接收到的關于本地機的信息做出訪問控制決定所采取的步驟的一個實施例的流程圖;圖4D是示出了其中提供對多個應用會話的授權遠程訪問的計算機網絡實施例的方框圖;圖4E是示出了會話服務器將本地機與其相關應用會話連接起來所采取的步驟的一個實施例的流程圖;圖5是示出了會話服務器將客戶端節點與其相關應用會話連接起來所采取的步驟的一個實施例的流程圖;圖6是示出了包括管理服務、提供應用枚舉的遠程機的一個實施例的方框圖;圖7是示出了訪問包括應用程序的多個文件所采取的步驟的一個實施例的流程圖;圖8A是示出了在操作系統控制下運行的計算機的一個實施例的方框圖,該操作系統具有應用兼容性和應用交際性降低的問題;圖8B是示出了具有應用兼容性和應用交際性降低的問題的多用戶計算機的方框圖;圖8C是示出了用于將過程與隔離范圍相關聯的方法中所采取的步驟的一個實施例的流程圖;圖9是示出了在執行應用程序的方法中采取的步驟的一個實施例的流程圖;圖IO是示出了駐留在遠程機上的多個應用文件的一個實施例的流程圖;圖ll是示出了對與遠程存儲的文件相關的文件元數據的請求在本地做出響應的方法中采取的步驟的一個實施例的流程圖;圖12是示出了對與遠程存儲的文件相關的文件元數據的請求在本地做出響應的系統的一個實施例的方框圖;圖13是示出了用于訪問目錄結構中與本地執行的應用程序相關的遠程文件的方法中采取的步驟的一個實施例的流程圖;圖14是示出了用于訪問與應用相關的目錄結構中的文件的系統的一個實施例的方框圖;圖15是包括許可管理子系統的遠程機的一個實施例的方框圖;圖16是示出了遠程機上的管理服務中的部件的一個實施例的方框圖;圖17是示出了從遠程機請求和維持許可所采取的步驟的一個實施例的流程圖;圖18是示出了可能與管理服務監測的會話相關的狀態的一個實施例的方框圖;圖19是示出了包括兩個目標的程序包(package)的方框圖,每個目標包括多個包括應用的應用文件;圖20是示出了用于無須重新引導操作系統來安裝應用程序的基于策略的方法中采取的步驟的一個實施例的流程圖;圖21是示出了用于無須重新引導操作系統來安裝應用程序的基于策略的方法中采取的步驟的一個實施例的流程圖;圖22是示出了枚舉腳本以在本地機上執行的一個實施例的屏幕快照;圖23是示出了包括打包機構(packagingmechanism)的系統實施例的方框圖,該打包機構將安裝程序執行到隔離環境中;圖24是示出了其中執行安裝程序需要重新引導操作系統的環境中采取的步驟的一個實施例的流程圖;圖25是示出了打包機構向其上安裝應用程序的遠程機的一個實施例的方框圖;以及圖26是示出了在應用隔離環境中安裝應用所采取的步驟的一個實施例的^危程圖。具體實施方式本發明的示范性實施例適用于分布式連網環境,其中,本地機的用戶請求訪問存儲在遠程機上的應用。在討論本發明的細節之前,首先來討論一下可以采用本發明的示范性實施例的一些網絡環境.圖1A是示出了適于實現本發明的示范性實施例的環境的方框圖。本地機10或20的用戶能夠連接至遠程機,例如遠程機30、30'、30"或30〃'(下文統稱為遠程機30)。盡管圖1A所示的實施例中僅示出了兩個本地機10和20,以及四個遠程機30,但是應當理解,對于這些部件中的任何一種或每一種,所述系統都可以提供多個。例如,在一個實施例中,所述系統可以包括多個邏輯分組的遠程機30,可以采用其中的一個或多個代表本地機10、20執行應用。在這些實施例中,可以將遠程機的邏輯組稱為"服務器農場(serverfarm),,,在圖1A中將其表示為農場38。在一些實施例中,遠程機30在地理上可以是分散的。可以將農場38作為一個整體進行管理。每一農場38中的遠程機30可以是不同種類的。也就是iJL,遠程可以按照某種類型的操作系統平臺(例如,由華盛頓雷德蒙的微軟公司制造的WINDOWSNT)工作,而其他遠程機30中的一個或多個可以根據另一種類型的操作系統平臺(例如,Unix或Linux)工作。構成每一農場38的遠程機30沒有必要在其農場38內彼此實際相鄰。因而,可以利用廣域網(WAN)連接或中等區域網(MAN)連接使在邏輯上組合成農場38的由遠程機30構成的組互連。例如,農場38可以包括實際上處于不同的州、城市、學校或房間的遠程機30。如果利用局域網(LAN)連接或某種形式的直接連接來連接遠程機30,那么可以提高農場38內的遠程機30之間的數據傳輸速度。可以將遠程機30稱為服務器、文件服務器、應用服務器或遠程機。在一些實施例中,遠程機30可以具有起著應用服務器或主應用服務器的作用的能力。在一個實施例中,遠程機30可以包括現用目錄(ActiveDirectory)。也可以將本地機10、20稱為客戶端節點或端點。在一些實施例中,本地機IO、20所具有的能力既能夠使其充當尋求對應用的訪問的客戶端節點,又能夠使其充當為其他本地機提供對其持有的(hosted)應用的訪問的應用月艮務器。在一個實施例中,本地機10與農場38中的遠程機30之一直接通信。在另一實施例中,本地機10通過執行程序鄰域(neighborhood)應用與農場38中的遠程機30通信。在另一實施例中,遠程機30提供主節點的功能性。在一些實施例中,本地機10通過通信鏈路與農場38中的遠程機30通信。本地機10可以通過通信線路150(例如)請求執行農場38中的遠程機30、3(K、30"和30"'所持有的各種應用,并接收所述應用的執行結果的輸出,以供顯示。通信鏈路150可以是同步或非同步的,并且其可以是LAN連接、MAN(中等區域網)連接或WAN連接。此外,通信鏈路150可以是無線鏈路,例如紅外信道或衛星頻帶。在一些實施例中,只有主節點提供識別和提供與持有所請求的應用的遠程機30'相關的地址信息所需的功能。在一些實施例中,本地才凡10與遠程機3(K"通信。在這些實施例之一中,遠程機3(T"提供web服務器的功能。在這些實施例的另一個當中,遠程機3(K"接收來自本地機10的請求,將所述請求發送至遠程機30,并采用來自遠程機30的對所述請求的響應來回應所述的本地機10的請求。在這些實施例的另一個當中的應用的枚舉和與持有所述應用枚舉所標識的應用的遠程機30'相關的地址信息。在這些實施例的另一個當中,遠程機30'"利用web接口向本地機10提供對所述請求的響應。在一個實施例中,本地機10與遠程機30'直接通信,以訪問所標識的應用。在另一實施例中,本地機IO接收來自遠程機30'"的應用輸出數據,所述應用輸出數據是通過執行遠程機3(K上的所標識的應用而得到的。在多個實施例中,將遠程機30以及本地機10和20設為個人計算機或計算機服務器,其可以具有加利福尼亞庫佩蒂諾的蘋果計算機公司、紐約白原市的IBM公司、加利福尼亞帕洛阿爾托的惠普公司或者得克薩斯州RoundRock的戴爾公司制造的類型。在一些實施例中,遠程機30可以是運行于諸如刀片服務器的服務器上的虛擬機。在這些實施例中,單個實際的服務器可以提供兩個或更多的應用服務器。圖1B和1C示出了在這些實施例中可以被用作遠程機30或本地機10、20的典型計算機100的方框圖。如圖1B和1C所示,每一計算機100包括中央處理單元102和主存儲器l(M。每一計算機100還可以包括其他任選元件,例如,一個或多個輸入/輸出裝置130a-130n(統一采用附圖標記130表示)和與中央處理單元102通信的高速緩沖存儲器140。中央處理單元102是對從主存儲器l(M中取出的指令作出響應并處理所述指令的任何邏輯電路。在多個實施例中,通過微處理器單元提供所述中央處理單元,其中,所述微處理器單元可以是加利福尼亞芒廷維尤的Intel公司、伊利諾斯州紹姆堡的摩托羅拉公司、紐約白原市的IBM公司或者加利福尼亞桑尼維爾的AMD公司制造的。主存儲器104可以是能夠存儲數據并且允許通過微處理器102直接訪問任何存儲位置的一個或多個存儲芯片,例如,其可以是靜態隨機存取存儲器(SRAM)、脈沖串(burst)SRAM或同步脈沖串SRAM(BSRAM)、動態隨機存取存儲器(DRAM)、快速頁面式DRAM(FPMDRAM)、增強型DRAM(EDRAM)、擴展數據輸出RAM(EDORAM)、擴展數據輸出DRAM(EDODRAM)、脈沖串擴展數據輸出DRAM(BEDODRAM)、擴展DRAM(EDRAM)、同步DRAM(SDRAM)、JEDECSRAM、PC100SDRAM、雙數據率SDRAM(DDRSDRAM)、增強型SDRAM(ESDRAM)、同步鏈接DRAM(SLDRAM)、直接存儲器總線DRAM(DRDRAM)或鐵電RAM(FRAM)。在圖1B所示的實施例中,處理器102通過系統總線120(在下文中將對其給出更為詳細的說明)與主存儲器104通信。圖1C示出了計算機系統100的實施例,其中,處理器通過存儲器端口與主存儲器104直接通信。例如,在圖1C中,主存儲器104可以是DRDRAM。圖1B和圖1C示出了主處理器102通過次級總線與高速緩沖存儲器140直接通信,其中有時將次級總線稱為"后側,,總線。在其他實施例中,主處理器102利用系統總線120與高速緩沖存儲器140通信.高速緩沖存儲器140通常具有比主存儲器104更快的響應時間,并且通常通過SRAM、BSRAM或EDRAM實現。在圖1B所示的實施例中,處理器102通過局部系統總線120與各種I/O裝置130通信。可以采用各種總線將中央處理單元102連接至所述1/0裝置130,所述總線包括VESAVL總線、ISA總線、EISA總線、微信道架構(MCA)總線、PCI總線、PCI-X總線、PCI-Express總線或NuBus。對于所述1/0裝置為視頻顯示器的實施例而言,處理器102可以采用加速圖形接口(AGP)與顯示器通信。圖1C示出了計算機系統100的實施例,其中,主處理器102通過HyperTransport、RapidI/O或InfiniBand與I/O裝置130b直接通信。圖1C還示出了混合了局域總線和直接通信的實施例處理器102在與1/0裝置130b直接通信的同時利用局域互連總線與1/0裝置130a通信。在計算機系統100中可以存在各種各樣的I/O裝置130。輸入裝置包括鍵盤、鼠標、跟蹤板、跟蹤球、傳聲器和圖形輸入板。輸出裝置包體視頻顯示器、揚聲器、噴墨打印機、激光打印機和染料升華打印機。所述I/O裝置還可以為計算機系統100提供大容量存儲器,例如硬盤驅動器、用于接收諸如3.5寸盤、5.25寸盤或ZIP盤的軟盤的軟盤驅動器、CD-ROM驅動器、CD-R/RW驅動器、DVD-ROM驅動器、各種格式的磁帶驅動器和USB存儲裝置,例如,所述USB存儲裝置可以是加利福尼亞LosAlamitos的TwintechIndustry公司制造的裝置的USBFlashDrive線或加利福尼亞庫佩蒂諾的蘋果計算機公司制造的裝置的iPodShuffle線。在其他實施例中,1/0裝置130可以是系統總線120和外部通信總線之間的橋梁,例如,所述外部通信總線可以是USB總線、AppleDesktop總線、RS-232串聯、SCSI總線、FireWire總線、FireWire800總線、以太網總線、AppleTalk總線、吉比特以太網總線、異步傳輸模式總線、HIPPI總線、超級HIPPI總線、SerialPlus總線、SCI/LAMP總線、FibreChannel總線或者串行附加小型計算機系統接口總線。具有圖1B和圖1C所示的類型的通用臺式計算機通常在操作系統的控制下工作,其中,操作系統控制著任務進程和對系統資源的訪問。典型的操作系統包括華盛頓雷德蒙的微軟公司制造的MICROSOFTWIND0WS、加利福尼亞庫佩蒂諾的蘋果計算機公司制造的MacOS、紐約Armonk的IBM公司制造的OS/2以及猶他州鹽湖城的Caldera公司免費發布的操作系統Linux,等等。本地機10和20可以是任何個人計算機(例如Macintosh計算機或者基于處理器的計算機,例如,所述處理器可以是286、386、486、Pentium、PentiumII、PentiumIII、PentiumIV、PentiumM、Celeron或Xeon處理器,所有的這些處理器都是由加利福尼亞芒廷維尤的Intel公司制造的)、基于Windows的終端、網絡計算機、無線裝置、信息設備、RISC、PowerPC、X裝置、工作站、小型計算機、主機計算機、個人數字助理或者其他具有基于Windows的桌面和足夠的用于執行小的直觀顯示程序的持久存儲器(persistentstore)的計算裝置。直觀顯示程序利用通過通信信道發送給它的命令和數據實現圖形顯示。本地機10和20所支持的面向Windows的平臺可以包括但不限于Windows3.x、Windows95、Windows98、WindowsNT3.51、WindowsNT4.0、Windows2000、Windows2003、WindowsCE、WindowsXP、Windowsvista、MAC/0S、Java、Linux和UNIX。本地機10和20可以包括視覺顯示裝置(例如,計算機監視器)、數據輸入裝置(例如,鍵盤)、用于存儲下載的應用程序的持久或易失存儲器(例如,計算機存儲器)、處理器和鼠標。小的直觀顯示程序的執行允許本地機10和20參與分布式計算機系統模型(即,基于服務器的計算模型)。對于本地機10或20是移動裝置的實施例而言,所述裝置可以是能夠實現JAVA的蜂窩電話,例如,由伊利諾斯州紹姆堡的摩托羅拉公司、日本京都的Kyocera、韓國漢城的三星電子公司制造的蜂窩電話。在本地機10或20可移動的其他實施例中,其可以是在PalmOS操作系統的控制下工作的個人數字助理(PDA),例如,其可以是由加利福尼亞米爾皮塔斯的palmOne公司制造的裝置。在其他實施例中,本地機10或20可以是在PocketPC操作系統的控制下工作的個人數字助理(PDA),例如,由加利福尼亞帕洛阿爾托的惠普公司制造的iPAQ裝置、加利福尼亞Walnut的ViewSonic制造的裝置或者紐約的美國東芝公司制造的裝置。在另一些實施例中,客戶端節點是PDA/電話裝置的組合,例如,由加利福尼亞米爾皮塔斯的palmOne公司制造的Treo裝置。在另一些實施例中,本地機10或20是在PocketPC操作系統的控制下工作的蜂窩電話,例如,由摩托羅拉公司制造的蜂窩電話。在一個實施例中,本地機10與農場38中的遠程機30之一直接通信。在一些實施例中,本地機10通過通信鏈路150與農場38中的遠程機30通信。本地機10可以通過通信線路150(例如)請求執行農場38中的遠程機30、30'、30"和30"所持有的各種應用,并接收所述應用的執行結果的輸出,以供顯示。通信鏈路150可以是同步或非同步的,并且其可以是LAN連接、MAN(中等區域網)連接或WAN連接。此外,通信鏈路150可以是無線鏈路,例如紅外信道或衛星頻帶。在一些實施例中,本地機10與遠程機30通信。在這些實施例的一個當中,遠程機30為本地機10提供本地機10能夠執行的應用的枚舉。在這些實施例的另一個當中,遠程機30為本地機10提供與持有所述應用枚舉所標識的應用的遠程機3(K相關的地址信息。在這些實施例的另一個當中,本地機10與遠程機3(K通信,以訪問所標識的應用。在一個實施例中,本地機IO通過執行程序鄰域應用與遠程機30和3(K通信。在一些實施例中,每一遠程機30提供識別和提供與持有所請求的應用的遠程機3(K相關的地址信息所需的功能。在一些實施例中,本地機10與遠程機30'"通信。在這些實施例中的一個當中,遠程機30"提供web服務器或文件服務器的功能。在所述的實施例的另一個當中,遠程機30'"接收來自本地機10的請求,將所述請求發送至遠程機30,并采用來自遠程機30的對所述請求的響應來回應所述的本地機10的請求。在這些實施例的另一個當中,遠程機30獲取本地機10可用的應用的枚舉和與提供對所述應用枚舉所標識的應用程序的訪問的遠程機3(K相關的地址信息。在這些實施例的另一個當中,遠程機3(V"利用web接口向本地機10提供對所述請求的響應。在一個實施例中,本地才幾10與遠程機30'直接通信,以訪問所標識的應用。在另一實施例中,本地機IO接收來自遠程機3(K"的應用輸出數據,所述應用輸出數據是通過執行遠程機30'上的所標識的應用而得到的。現在參考圖1D,構成農場38的遠程機30均包括網絡端接口202和農場端接口204。遠程機30的網絡端接口可以與一個或多個本地機10、20或與網絡210通信。網絡210可以是WAN、LAN或者諸如因特網或萬維網的國際網.本地機IO、20可以利用210與遠程機30建立連接。遠程機30的農場端接口204通過通信鏈路相互連接,從而使遠程機30能夠相互通信。在每一遠程機30上,農場端接口204與網絡端接口202通信。農場端接口204還與持久存儲器230,以及一些實施例中的動態存儲器240通信(由箭頭220表示)。將遠程機30、持久存儲器230和動態存儲器240(在提供時)的組合統稱為農場38。在一些實施例中,遠程機30與持久存儲器230通信,另一遠程機3(K與遠程機30通信,以訪問存儲在所述持久存儲器內的信息。實際上,可以將所述持久存儲器230實現到磁盤、特大容量磁盤、廉價磁盤冗余陣列、可寫光盤或者任何其他允許數據讀寫并且在存儲裝置斷電后能夠保持寫入的數據的裝置上。單個實際裝置可以提供實現多個持久存儲器的存儲器,即,可以采用單個實際裝置為一個以上的農場38提供持久存儲器230。持久存儲器230保持與農場38中的每一遠程機30相關的靜態數據和農場38內的所有遠程機30采用的全局數據。在一個實施例中,持久存儲器230可以按照低權(Lightweight)目錄訪問協議(LDAP)數據模型保持遠程機數據。在其他實施例中,持久存儲器230將遠程機數據存儲到順應ODBC的數據庫中。出于本說明書的目的,"靜態數據"是指不發生頻繁改變的額數據,即,僅在小時、天或周的基礎上發生變化的數據或者根本不發生變化的數據。每一遠程機采用持久存儲器子系統從持久存儲器230讀取數據或向其內寫入數據。出于在物理或邏輯上的可靠性的目的,可以復制持久存儲器230所存儲的數據。例如,可以采用一組冗余的鏡像盤提供物理冗余,其中,每一冗余鏡像盤提供一個數據副本。在其他實施例中,可以采用標準數據庫技術復制數據庫自身,從而提供對所述數據庫的多重復制。在其他實施例中,可以同時采用物理和邏輯復制。可以通過各種方式實現動態存儲器240(即,所有記錄表格的集合)。在一個實施例中,動態存儲器240是集中式的;也就是說,將所有的運行時間數據存儲到農場38中的一個遠程機30的存儲器內。所述遠程機起著主網絡節點的作用,農場38中的所有其他遠程機30在尋求對所述運行時間數據的訪問時都要與所述主網絡節點通信。在另一實施例中,農場38中的每一遠程機30保持動態存儲器240的整個副本。這里,每一遠程機30與每一其他遠程機30通信,從而使它的動態存儲器240的副本保持更新。在另一實施例中,每一遠程機30保持其自身的運行時間數據,并在試圖獲得來自每一其他遠程機30的運行時間數據時與它們通信。因而,例如,試圖找到本地機10所請求的應用程序的遠程機30可以直接與農場38中的每一其他遠程機30通信,從而找到持有所請求的應用的一個或多個遠程機。對于具有大量遠程機30的農場38而言,由這些實施例產生的網絡流量可能變得非常沉重。其中的一個實施例通過將農場38中的遠程機30的子集(通常具有兩個或更多的遠程機)指定為"收集點,,來緩解沉重的網絡流量。通常,收集點是指收集運行時間數據的遠程機。每一收集點存儲從農場38中的某一其他遠程機30收集的運行時間數據。農場38中的每一遠程機30均能夠作為收集點工作,因而均能夠被指定為收集點。在一個實施例中,每一收集點存儲整個動態存儲器240的副本。在另一實施例中,每一收集點存儲動態存儲器240的一部分,即,其保持具有特定數據類型的運行時間數據。可以根據一種或多種標準預先確定遠程機30存儲的數據類型。例如,遠程機30可以基于其引導程序順序存儲不同類型的數據。或者,可以由管理員利用管理工具140設置遠程機30存儲的數據的類型。在這些實施例中,動態存儲器240分布在農場38中的兩個或更多遠程機30當中。未被指定為收集點的遠程機30知曉農場38中被指定為收集點的遠程機30。未被指定為收集點的遠程機180在發出和請求運行時間數據時可以與特定收集點通信。因而,收集點減輕了網絡流量,因為農場38中的每一遠程機30在尋求對運行時間數據的訪問時都與單個收集點遠程才幾30通信,而不是與每一其他遠程機30通信。每一遠程機30可以作為針對一種以上的數據類型的收集點工作。例如,遠程機30"可以作為針對許可信息和針對加載信息的收集點工作。在這些實施例中,每一收集點可以收集不同類型的運行時間數據。例如,為了對這種情況舉例說明,遠程機3(K"可以收集許可信息,而遠程機30"可以收集加載信息。在一些實施例中,每一收集點存儲在農場38中的所有遠程機30之間共享的數據。在這些實施例中,每一特定類型的數據的收集點與農場38中的針對該種類型的數據的每一其他收集點交換該收集點收集的數據。因而,在完成了所述數據的交換的同時,每一收集點30"和30都擁有了相同的數據。而且,在這些實施例中,每一收集點30和30"還能夠使每一其他收集點始終跟上對所述運行時間數據的更新。瀏覽(browsing)能夠使本地機10查看農場38、遠程機30和農場38中的應用,并訪問可用信息,例如整個農場38中的會話。每一遠程機30包括ICA瀏覽子系統260,從而為本地機IO提供瀏覽功能。在本地機10建立與遠程機30中的任何一個的ICA瀏覽器子系統260的連接之后,所述瀏覽器子系統將支持各種本地機請求。所述本地機請求包括(1)枚舉農場中的遠程機的名稱,(2)枚舉農場中公布的應用的名稱,(3)將遠程機名稱和/或應用名稱解析成本地機10可用的遠程機地址。ICA瀏覽器子系統260還支持由運行程序鄰域應用的本地機10所發出的請求,其根據請求為所述本地機10提供對該用戶得到了授權的農場38中的應用的查看。ICA瀏覽器子系統260將所有的上述本地機請求發送給遠程機30中的適當的子系統。在一個實施例中,農場38中的每一具有程序鄰域子系統的遠程機30可以為本地機10的用戶提供對農場38中的應用的查看。所述程序鄰域子系統270可以限制對那些所述本地機10的用戶得到了訪問授權的應用的查看。典型地,這一程序鄰域服務將應用作為列表或圖符組提供給用戶。程序鄰域子系統270所提供的功能可以為兩種類型的本地機所使用(1)能夠直接從本地機桌面訪問功能的能夠啟用程序鄰域的本地機,(2)能夠通過運行遠程機上的能夠啟用程序鄰域的桌面來訪問所述功能的不能啟用程序鄰域的本地才幾(例如,遺留本地機(legacylocalmachine))。可以在建立于ICA虛擬信道的頂部的專用虛擬信道上進行能夠啟用程序鄰域的本地機和程序鄰域子系統270之間的通信。在其他實施例中,可以利用XML服務實施所述通信。在這些實施例的一個當中,能夠啟用程序鄰域的本地機與XML子系統通信,例如,所述XML子系統可以是下文結合圖6說明的XML服務516,其提供了遠程機30上的程序鄰域功能。在一個實施例中,能夠啟用程序鄰域的本地機不具有與帶有程序鄰域子系統270的遠程機的連接。對于這一實施例而言,本地機10向ICA瀏覽器子系統260發送請求,以建立與遠程機30的ICA連接,從而識別出本地機10可用的應用。之后,本地機10運行獲取用戶的信任狀的客戶端側對話。所述信任狀被ICA瀏覽器子系統260接收,并被發送至程序鄰域子系統270。在一個實施例中,程序鄰域子系統270向用戶管理子系統發送所述信任狀,以實現對其的鑒定。用戶管理子系統可以返回一組存在區分的名稱,其表示所述用戶所屬的帳戶的列表。在鑒定的同時,程序鄰域子系統270建立程序鄰域虛擬信道。這一信道一直保持打開狀態,直到完成應用過濾為止。之后,程序鄰域子系統270從與這些帳戶相關的公共應用子系統524請求程序鄰域信息。公共應用子系統524從持久存儲器230獲得程序鄰域信息。在接收到所述程序鄰域信息的同時,程序鄰域子系統270為所述程序鄰域信息設置格式并將其通過所述程序鄰域虛擬信道返回給所述本地機。之后關閉部分ICA連接。對于能夠啟用程序鄰域的本地機建立了與遠程機的局部ICA連接的另一個例子而言,考慮選擇了農場38的本地機10的用戶。對農場38的選擇將來自本地機10的請求發送至ICA瀏覽器子系統260,從而建立起與所選的農場38的遠程機30中的一個的ICA連接。ICA瀏覽器子系統260向程序鄰域子系統270發送選擇農場38中的遠程機30的請求。通過ICA瀏覽器子系統260識別與遠程機30相關的地址信息,并將其返回給本地機IO。接下來,可以將本地機IO連接至對應于所接收到的地址信息的遠程機30。在另一實施例中,能夠啟用程序鄰域的本地機10建立ICA連接,在所述ICA連接上建立程序鄰域虛擬信道,只要所述ICA連接存在就使所述程序虛擬信道保持暢通。通過這一程序鄰域虛擬信道,程序鄰域子系統270將程序鄰域信息更新發送給本地機10。為了獲得更新,程序鄰域子系統270預訂來自公共應用子系統524的事件,從而允許程序鄰域子系統270檢測到所/〉布的應用的變化。參考圖1E,其示出了用于通過在web服務目錄中公布GUI來提供可以為本地機所使用的多個應用程序的系統架構的另一個實施例的方框圖。所述系統包括本地機10和多個遠程機30。一個遠程機30起著內容服務器的作用。遠程機3(K提供web服務器功能。遠程機30"提供用于提供對應用文件的訪問的功能,并且起著應用服務器或文件服務器的作用。本地機10能夠通過網絡155從內容服務器30、web服務器30'和應用服務器30"上下載內容。在一個實施例中,本地機10能夠通過客戶端-應用服務器通信信道150從應用服務器30"下栽內容(例如,應用)。在一個實施例中,本地機10上的web瀏覽器11采用加密套接字協議層(SSL)支持來實現與內容服務器30和/或web服務器30'的通信。SSL是由加利福尼亞芒廷維尤的Netscape通信公司開發的安全協議,現在已經成為了因特網工程任務組頒布的標準。或者,可以利用其他安全協議將網瀏覽程序11連接至內容服務器30和/或web服務器30、例如,所述安全協議可以是但不限于由加利福尼亞州的洛斯阿爾托斯的TerisaSystems開發的加密超級文本傳輸協議(SHTTP)、HTTPoverSSL(HTTPS)、由華盛頓雷德蒙的微軟公司開發的專用通信技術(PCT)和IETF頒布的傳送級安全(TLS)標準。在其他實施例中,web瀏覽器11利用不存在加密的通信協議,例如超級文本傳輸協議(HTTP)與服務器30通信。此外,本地機10包括用于通過客戶端-應用服務器通信信道150與應用服務器30"建立和交換通信的應用客戶端13。在一個實施例中,應用客戶端13為GUI應用。在一些實施例中,應用客戶端13是由佛羅里達州FortLauderdale的CitrixSystems公司開發的獨立計算架構(ICA)客戶端,在下文中又將其稱為ICA客戶端13。應用客戶端13的其他實施例包括由華盛頓雷德蒙的微軟公司開發的遠程顯示協議(RDP)客戶端、X-Windows客戶端13、能夠執行多媒體應用、email、Java或.NET代碼的客戶端側播放器、解釋器或模擬器。此外,在一個實施例中,可以通過ICA客戶端13在本地機10上顯示在應用服務器30"上執行的應用的輸出。在一些實施例中,應用客戶端13是諸如應用流動客戶端552的應用客戶端,在下文中將參考圖5更詳細地說明應用流動客戶端552。本地機10通過搜索web服務目錄160來尋找web服務。在一個實施例中,所述搜索是人工搜索。或者,所述搜索是自動搜索。所述web服務目錄160還可以提供基于服務的視圖,例如,白頁或黃頁,從而在web服務目錄中搜索web服務。在另一實施例中,瀏覽。在一個實施例中,web服務目錄160在獨立于內容服務器30的遠程機上,例如,在目錄服務器上運行。在其他實施例中,所述web服務目錄160在多個服務器上運行。在一些實施例中,內容服務器30能夠通過在web服務目錄160中提供信息或分析使本地機10能夠基于所述的額外的分析或信息選擇web服務。所述web服務目錄160所能列舉的服務信息的例子包括但不限于提供服務的商家的名稱、服務類型、服務的文字描述、一個或多個訪問點(SAP)、網絡類型、使用路徑(例如,TCP或HTTPS)和服務質量(QoS)信息。此外,所述服務信息可以是客戶端裝置類型或用戶(例如職責)的詳細說明。因而,服務選擇可以以一個或多個上述屬性為基礎。在一個實施例中,服務類型表示本地機10必須用來訪問所述web服務的編程接口。例如,所述服務類型可以表明通過接口描述語言對所述服務進行了編碼,例如所述接口描述語言可以是web服務描述語言(WSDL)。所述服務訪問點或SAP是應用的唯一地址。所迷SAP能夠使計算機系統在本地才幾10和每一遠程機30上支持多個應用。例如,應用服務器30"可以支持電子郵件(即,e-mail)應用、文件傳輸應用和/或GUI應用。在一個實施例中,這些應用均具有SAP,其在應用服務器30"內是唯一的。在一個實施例中,所述SAP是web或因特網地址(例如,域名系統(DNS)名、IP/端口或資源定位碼(URL))。因而,在一個實施例中,SAP將web服務器3(T的地址識別成存儲在web服務器30'上的應用的地址的一部分。在一些實施例中,SAP將公布服務器插件程序165的地址識別成存儲在web服務器30'上的應用的地址的一部分,如下文所述。在一個實施例中,所述SAP是來自UDDI注冊的"接入點(accessPoint),,。為了準備用于在web服務目錄160中公布的項目,內容服務器30包括web公布工具170。在一個實施例中,web公布工具170是一種軟件模塊。或者,web發布工具170是另一種服務器,其可以位于內容服務器30的外部或內部。在一個實施例中,網絡服務器30'向本地機10提交web頁。Web服務器3(K可以是能夠向本地機105提供web頁的任何遠程機30。在另一實施例中,web服務器3(K是企業信息門戶(例如,企業內聯網或加密的企業對企業外聯網)。企業門戶是公司的網站,其匯集了各種應用、數據和內容,使其個性化并將其提供給用戶,同時提供用于更為有效地組織和使用信息的管理工具。在一些公司內,其門戶已經采用對虛擬工作位置的基于瀏覽器的訪問替代了常規的桌面軟件。Web服務器W還包括用于實現圖形用戶界面(GUI)應用的公布的公布服務器插件程序165。更準確地說,所述公布服務器插件程序165將新的web服務項URL轉換為GUI應用服務,從而能夠通過web服務目錄160訪問GUI。在一個實施例中,公布服務器插件程序165是公共網關接口(CGI)腳本,這是一種被設計為接受和返回符合CGI規約的數據的程序。可以通過任何程序設計語言,例如C、Perl、Java或VisualBasic編寫所述程序。在另一實施例中,所述公布服務器插件程序165是Java服務器頁(JSP)。利用公布服務器插件程序I65促進遠程GUI應用的公布,本地機10能夠由此通過整個GUI接口,例如,Citrix的ICA或Microsoft的RDP而并非通過編考呈接口或web頁訪問web月艮務。應用服務器30"持有一個或多個本地機10可用的應用。所述應用的例子包括由雷德蒙的微軟公司制造的諸如MICROSOFTWORD的字處理程序和諸如MICROSOFTEXCEL的電子表格程序、財務報表程序、客戶注冊程序、提供技術支持信息的程序、客戶數據庫程序或應用集管理程序。在一些實施例中,在不同的網絡上建立一個或多個通信鏈路150。例如,客戶端-內容服務器通信信道150'可以屬于第一網絡(例如,萬維網),客戶端-web服務器通信信道150"可以屬于第二網絡(例如,加密外聯網或虛擬專用網(VPN))。在一個實施例中,web公布工具170存儲與web公布工具l了0在持久大容量存儲器225中的web服務目錄160內公布的應用有關的信息。在一個實施例中,所述信息是動態公布服務器插件程序165的URL。持久大容量存儲器225可以是磁盤或磁光驅動器。在一個實施例中,所述持久大容量存儲器225為數據庫服務器,其將與所公布的應用相關的數據存儲到一個或多個局部服務數據庫內。所述持久大容量存儲器225可以是處于任何或所有遠程機30之內或之外的部件。在其他實施例中,內容服務器30或web服務器30'與農場38中的遠程機通信,以檢索應用列表。在這些實施例之一中,內容服務器30或web服務器3(K與農場38通信,而不是和持久大容量存儲器225通信.現在參考圖2,流程圖示出了選擇應用程序的執行方法所采取的步驟的一個實施例。簡而言之,接收與本地機相關聯或與本地機的用戶相關聯的信任狀,請求枚舉可以由本地機執行的應用(步驟202)。響應于所接收的信任狀提供對本地機可用的多個應用程序的枚舉(步驟204)。接收請求以執行被枚舉的應用(步驟206)。響應于策略選擇執行被枚舉的應用的預定數量的方法之一,所述預定數量的方法包括用于被枚舉的應用的應用流傳輸的方法(步驟208)。接收與本地機相關聯或與本地機的用戶相關聯的信任狀,請求枚舉可以由本地機執行的應用(步驟202)。在一個實施例中,遠程機利用信任狀從本地機IO接收枚舉可用應用的請求。在另一個實施例中,遠程機30上的XML服務接收請求和信任狀并將請求和信任狀傳輸到遠程機30上的管理服務。在一些實施例中,起到web服務器功能的遠程機30從本地機10接收通信并將通信轉發到遠程機30'。在這些實施例之一中,Web服務器將通信轉發到遠程機3tK上的XML服務。在這些實施例的另一個中,Web服務器位于本地機上。在由web服務器將來自本地機10的通信路由到遠程機30'的其他實施例中,可以響應于本地機10的網際協議(IP)地址選擇遠程機30。在一些實施例中,本地機10請求訪問遠程機30上駐留的應用。在這些實施例之一中,本地機10請求由遠程機30執行駐留在遠程機30上的應用。在這些實施例的另一個中,本地機IO請求檢索包括應用的多個應用文件。在一些實施例中,用戶經由遠程機30提供給本地機10的圖形用戶界面向遠程機30提供信任狀。在其他實施例中,具有web服務器功能的遠程機30'"向本地機IO提供圖形用戶界面。在其他實施例中,由遠程機30發送給本地機10的收集代理收集來自本地機10的信任狀。在一個實施例中,信任狀是指用戶名和口令。在另一個實施例中,信任狀不限于用戶名和口令,而是包括,但不限于本地機10的機器ID、操作系統類型、操作系統補丁的存在、已安裝網卡的MAC地址、客戶端裝置上的數字水印、活動目錄中的成員身份、病毒掃描器的存在、個人防火墻的存在、HTTP報頭、瀏覽器類型、裝置類型、諸如網際協議地址或地址范圍的網絡連接信息、遠程機30的機器ID、包括改變時區的調節的訪問請求的日期或時間以及授權信任狀。在一些實施例中,與本地機相關聯的信任狀是與本地機的用戶相關聯的。在這些實施例之一中,信任狀是用戶所有的信息。在這些實施例的另一個中,信任狀是用戶身份驗證信息。在其他實施例中,與本地機相關聯的信任狀是與網絡相關聯的.在這些實施例之一中,信任狀是與本地機可以連接到的網絡相關聯的信息。在這些實施例的另一個中,信任狀是與收集本地機信息的網絡相關的信息。在其他實施例中,與本地機相關聯的信任狀是本地機的特征。響應于所接收的信任狀提供對本地機可用的多個應用程序的枚舉(步驟204)。在一個實施例中,本地機10的用戶可能知道網絡40中的遠程機30所持有的應用程序的可用性,但不知道在哪里找到這種應用,并沒有鏈接到這種應用所需的技術信息。這些可用的應用程序構成用戶的"程序鄰域"。用于為本地機判斷程序鄰域的系統包括應用程序(下文稱為"程序鄰域"應用)、用于存儲應用程序部件的存儲器以及用于執行應用程序的處理器。如下所述,可以在本地機10和/或遠程機30的存儲器中安裝程序鄰域(PN)應用。根據程序鄰域應用而運行的遠程機30從農場38中的每臺遠程機30收集與應用相關的信息。用于每個所持有的應用的與應用相關的信息可以是各種信息,例如包括持有應用的遠程機地址、應用名稱、被授權使用應用的用戶或用戶組以及在建立連接之前為了運行應用本地機10所需的最低能力。例如,應用可能對視頻數據進行流傳輸,因此所需的最低能力可以是本地機支持視頻數據。其他實例為本地機支持音頻數據或具有處理加密數據的能力。與應用相關的信息可以存儲在數據庫中。當本地機10連接到網絡40時,本地機10的用戶提供用戶信任狀。用戶信任狀可以包括本地機10的用戶的用戶名、用戶的口令以及用戶被授權的域名。或者,可以從智能卡、時基令牌、社會保障號碼、用戶口令、個人身份(PIN)號碼、基于對稱密鑰或橢圓曲線密碼術的數字證書、用戶的計量生物學特征或任何通過其能夠獲得本地機10的用戶身份并提交進行驗證的其他方式獲得用戶信任狀。對本地機10響應的遠程機30可以基于用戶信任狀對用戶進行認證。可以在執行程序鄰域應用的任何地方存儲用戶信任狀.對于本地機10執行程序鄰域應用的實施例而言,可以在本地機10上存儲用戶信任狀。對于遠程機30執行程序鄰域的實施例而言,可以在該遠程機30上存儲用戶信任狀。遠程機30從用戶信任狀和與應用相關的信息還可以判斷出遠程機30所持有的哪些應用程序是可以由本地機10的用戶使用的。遠程機30向本地機10發送表明可用應用程序的信息。該過程消除了本地機10的用戶建立應用連接的必要。此外,遠程機30的管理員可以在本地機10的多個用戶之間控制對應用的訪問。在一些實施例中,遠程機30執行的用戶認證可以足以授權使用提供給本地機10的每個所持有應用程序,盡管這樣的應用可能駐留在另一遠程機30上。因此,當本地機10啟動(即開始執行)所持有應用之一時,可以不必認證本地機IO再次輸入的用戶信任狀來認證應用的使用。于是,單獨一項用戶信任狀可以用于判斷可用應用并授權啟動這種應用,而無須用戶進行額外的人工登錄認證過程。本地機10或遠程才幾30的任一個都可以啟動程序鄰域應用。在本地機IO、20的顯示屏12、22上顯示結果。在基于圖形窗口的實現中,可以在程序鄰域圖形窗口中顯示結果,并可以在該窗口中用圖形符號表示每個授權的應用程序。在一個實施例中,程序鄰域應用濾除掉未授權本地機IO執行的應用程序,僅顯示授權的(即可用的)程序。在其他實施例中,程序鄰域應用可以顯示授權和未授權的應用。在不濾除未授權應用而加以顯示的時候,可以提供通知,表明這種應用是不可用的。或者,程序鄰域應用可以向本地機10、20的用戶報告遠程機30所持有的所有應用,而不標明授權或未授權本地機10、20執行哪些應用。隨后可以在本地機IO、20試圖運行這些應用之一時決定授權情況。本地機10可以請求從遠程機30進行應用枚舉。應用枚舉使本地機10的用戶能夠看到每個發布的應用的名稱。在一個實施例中,無論用戶是否有執行應用的授權,本地機10的用戶都可以看到應用名稱。在另一個實施例中,用戶僅看到授權用戶執行的那些應用的名稱。根據本地機10運行的具體過程,應用枚舉請求傳送到ICA瀏覽器子系統260、到程序鄰域子系統270或到/>共應用子系統524。例如,當本地機IO在運行程序鄰域應用時,將應用枚舉請求發送到遠程機30上的程序鄰域子系統270。當本地機10通過網頁提出枚舉請求時,該請求傳送到公共訪問點子系統524。對這些實施例而言,在本地機10希望枚舉應用時,公共應用子系統524充當著程序鄰域子系統270、ICA瀏覽器子系統260和公共應用子系統的初始訪問點。在一些實施例中,當本地機IO通過網頁提出枚舉請求時,托管web服務器的中間遠程機30接收該請求并將請求轉發到遠程機3(K。在接收到枚舉請求時,公共應用子系統524向持久存儲器230查詢所有應用的列表。對于從程序鄰域子系統270和公共訪問點645子系統接收的請求,根據本地機10的用戶的信任狀對這一應用列表進行過濾(即用戶僅看到用戶被授權的那些應用)。本地機10還可以請求遠程機枚舉。遠程機枚舉使本地機10的用戶能夠看到農場38中的遠程機列表。在一個實施例中,可以根據遠程機類型對遠程機列表進4亍過濾,這是由該遠程機上的專用遠程機子系統決定的。根據本地機120運行的具體過程,將遠程機枚舉請求傳送到ICA瀏覽器子系統260或公共訪問點子系統645。例如,當本地機120通過網頁提出遠程機枚舉請求時,該請求傳送到公共訪問點子系統645。對這些實施例而言,公共遠程機子系統300充當著ICA瀏覽器子系統260和公共訪問點645子系統的初始訪問點。在接收到遠程機枚舉請求時,公共遠程機子系統從持久存儲器230查詢所有遠程機列表。任選地,根據遠程機類型過濾該遠程機列表。圖3A是示出了本地機10啟動執行程序鄰域應用的過程的另一實施例的方框圖,在該實例中是通過萬維網啟動的。本地機10執行網絡34利福尼亞MountainView的NETSCAPECommunications,Inc.制造的NETSCAPENAVIGATOR,或者由華盛頓Redmond的MicrosoftCorporation制造的MICROSOFTINTERNETEXPLORER,或者由加利福尼亞MountainView的MozillaFoundation制造的FIREFOX,或者由挪威奧斯陸的OPERASoftwareASA制造的OPERA,或者由加利福尼亞Cupertino的AppleComputer,Inc.制造的SAFARI,本地機IO通過網絡瀏覽器80發出請求82,希望訪問對應于遠程機30上駐留的HTML頁面的統一資源定位符(URL)地址。在一些實施例中,由遠程機30向本地機IO返回的第一個HTML頁面84是視圖識別本地機10的認證頁面。仍然參考圖3A,一旦本地機IO獲得遠程機30的認證,遠程機30準備并向本地機10發送HTML頁面88,該頁面包括程序鄰域窗口58,該窗口中給出了表明本地機IO已經訪問過的應用程序的圖形符號57、57'。本地機10的用戶通過點擊該圖符57來啟用圖符57表示的應用的執行。在一些實施例中,遠程機30代表本地機10的用戶執行程序鄰域應用。在這些實施例之一中,遠程機30是位于本地機10和遠程機30'之間的中間遠程機。參考圖3B,流程圖示出了通過在web服務目錄中的GUI發布提供本地機可用的多個應用程序所采取的步驟的一個實施例。Web發布工具170接收要發布的應用(例如GUI應用)的web服務描述和訪問信息(步驟300)。在一個實施例中,Web服務描述包括上述服務信息(例如,提供web服務的單位名稱、服務類型、服務的文本描述和SAP)。訪問信息例如可以包括發布的應用名稱、傳輸控制協議(TCP)瀏覽服務器農場地址和MetaFrame服務器IP地址。在一些實施例中,訪問信息指定穿過網絡或安全網關或網橋裝置所用的地址和權證。然后web發布工具170構建服務發布請求以請求發布web服似例如GUI應用)(步驟305)。在一個實施例中,服務發布請求包括SAP。在一些實施例中,SAP是一種包括web服務器3(T的web地址和發布服務器插件165的URL。此外,web地址可以是通用資源標識符(URI),這是引用web上目標的名稱和地址類型的通用術語。URL是一種URI。URI的實例為web月艮務器3(K的名稱(例如"web-server")和用于發布服務器插件165的CGI腳本名稱(例如"dynamic-component"),Web發布工具170在持久大容量存儲器225中存儲與SAP相關聯的SAP項(步驟310)。在一些實施例中,Web發布工具170還將所發布的應用信息(例如ICA-published-app-info)與GUI應用關聯起來。在其他實施例中,web發布工具170還包括服務發布請求中的密鑰,以標識內容服務器30在持久大容量存儲器225中存儲的SAP項。例如,該密鑰可以具有值"123456677"。標識web服務器3(K的SAP、發布服務器插件165的CGI腳本名稱和上述密鑰的實例為"http://web-server/dynamic-component/app=123456677."'與上述SAP相關聯的SAP項的實例為"密鑰=123456677,值=ICA-published-app-info"。該密鑰可以是任意長度(例如56比特密鑰,128比特密鑰)。在一個實施例中,該密鑰為密碼隨機數。該密鑰還可以提供對密鑰持有者的訪問權。雖然用密鑰進行示例,但可以使用任何手段來為持久大容量存儲器225中存儲的SAP項提供一種形式的安全措施。Web發布工具170向內容服務器30提供服務發布請求,希望在web服務目錄160中進行發布(步驟315)。此外,在一個實施例中,內容服務器30向本地機10發送SAP的密鑰,請求特定web服務,以便在隨后定位SAP項時使用。在一個實施例中,發布服務發布請求使本地機10的用戶能夠訪問該服務。在一個實施例中,利用弗羅里達FortLauderdale的CitrixSystems,Inc.開發的訓SE在web月良務目錄160上發布GUI應用。在一些實施例中,GUI應用的發布者利用ApplicationLaunchingAndEmbedding(ALE)定余J在web月艮務目錄160上對GUI應用的發布,ALE也是由CitrixSystems,Inc.開發的。ALE使得能夠從HTML頁面啟動GUI應用,或者能夠將應用嵌入到HTML頁面中。本地機10然后從web服務目錄160查詢服務名稱(步驟320)。內容服務器30從本地機IO接收查詢(步驟325)并在web服務目錄160中找到所請求的服務名稱。在另一個實施例中,本地機IO的用戶在web服務目錄160中瀏覽,直到定位出本地機10的用戶正在尋找的特定服務名稱為止。雖然以本地機IO進行了示例,其實任何web服務目錄客戶端(例如UDDI客戶端或LDAP瀏覽器)都可以查詢或瀏覽web服務目錄160以發現所發布的web服務。在定位出與所接收的查詢相關聯的SAP時,內容服務器30向本地機10發送SAP(步驟330)。本地機10接收SAP(步驟335)并從該SAP判定發布服務器插件165的地址。本地機10隨后向web服務器30'發送對GUI應用的請求(步驟340)。在一些實施例中,來自本地機10的請求是從網絡瀏覽器11傳輸到web服務器3(K的HTTP請求。在其他實施例中,在本地機10上執行的應用(例如通常的目錄瀏覽器或HTMLUl)從內容服務器30接收SAP并將SAP作為要旨提供給網絡瀏覽器11。網絡瀏覽器1然后可以自動地向web服務器30'發送(對GUI應用的)HTTP請求。根據前述實例,發給web服務器30'的應用請求的具體實例為"http://web-server/dynamic-component/app=123456677."。Web服務器30',尤其是發布服務器插件165接收與SAP相關的應用請求(步驟345)并確定與該請求相關的SAP項(步驟350)。在一個實施例中,發布服務器插件165從本地機IO接收請求并檢索與已經(作為SAP項的一部分)存儲在持久大容量存儲器225中的請求相關聯的所發布的應用信息。在一些實施例中,發布服務器插件165使用本地機10從內容服務器30接收的SAP(或SAP的一部分)作為密鑰來訪問存儲在持久大容量存儲器225中的適當服務項(例如已發布的應用信息)。發布服務器插件165然后構建具有已發布的應用信息(例如應用服務器30"的HTTP地址)的文件或文檔(步驟352)并將該文檔發送到本地機10(步驟355)。發布服務器插件165構建該文件,使得該文件具有與應用客戶端13兼容的格式。在一個實施例中,該文檔為多用網絡郵件擴展(MIME)或安全MIME(S/MIME)文檔。在另一個實施例中,該文檔為含有ICAweb客戶端嵌入對象HTML標記的HTML文檔。在又一個實施例中,該文檔為含有應用流傳輸客戶端嵌入對象HTML標記的HTML文檔。網絡瀏覽器11隨后接收該文檔并視圖打開該文檔。在一個實施例中,如果應用客戶端13未安裝在本地機IO上,則本地機IO與應用服務器30"通信以下載并安裝該用客戶端13。在安裝應用客戶端13時,或者,如果應用客戶端13已經安裝在本地機10上了,本地機10啟動應用客戶端13以查看從web服務器30'接收的文檔(步驟360)。一旦在本地機10上安裝并執行應用客戶端13,應用服務器30"則執行該應用并在應用客戶端13上顯示該應用(步驟365)。在替換實施例中,應用服務器30"向應用客戶端13發送包括該應用的多個應用文件以在本地機10上執行,如下文參考圖7要進一步詳述的。在另一個實施例中,本地機10查看該文檔(即使在啟動應用客戶端13之前)并使用文檔中的信息來從應用服務器30"獲得GUI應用。在本實施例中,GUI應用的顯示包括應用客戶端30',的安裝和執行情況。此外,文檔的查看可以是對本地機10的用戶透明的。例如,本地機10可以從web服務器30'接收文檔并在自動從應用服務器30"請求GUI應用之前解釋該文檔。于是,應用客戶端13向已發布的應用、桌面、桌面文檔和應用客戶端13支持的任何其他應用提供基于服務的訪問。應用客戶端13能夠向其提供訪問的應用實例包括但不限于WINDOWS桌面、均由華盛頓Redmond的MicrosoftCorporation開發的諸如MICR0S0FTEXCEL、W0RD和POWERPOINT的WINDOWS文檔、諸如由加利福尼亞PaloAlto的SUNMicrosystems開發的SUNSOLARIS的Unix桌面以及由北卡羅來納Durham的RedHat,Inc.銷售的GNU/Linux等。在一些實施例中,響應于策略引擎對本地機是否可以以及如何訪問應用的判斷,提供本地機10可用的多個應用程序的枚舉(步驟204)。策略引擎可以在做出決定之前收集有關本地機的信息。現在參考圖4A,示出了根據本發明構建的計算機網絡的一個實施例,其包括本地機10、收集代理404、策略引擎406、策略數據庫408、農場38和應用服務器3(K。在一個實施例中,策略引擎406為遠程機30。在另一個實施例中,應用服務器3(K為遠程機30'。盡管在圖4A所示的實施例中僅示出了一個本地機10、收集代理404、策略引擎406、農場38和應用服務器30、但應當理解,該系統可以對這些部件中任一種或每種提供多個。簡而言之,當本地機10向策略引擎406發送訪問應用的請求410時,收集代理404與本地機10通信,檢索關于本地機10的信息,并將本地機信息412發送到策略引擎406。策略引擎406通過將來自策略數據庫408的策略施加到所接收的信息412上來做出訪問控制決定。更詳細地講,本地機10向策略引擎406發送對資源的請求410。在一個實施例中,策略引擎406駐留在應用服務器30'上。在另一個實施例中,策略引擎406為遠程機30。在又一個實施例中,應用服務器30'從本地機10接收請求410并將請求410發送到策略引擎406。在又一個實施例中,本地機向遠程機30〃'發送對資源的請求410,遠程機3(K''將請求410發送到策略引擎406。在一些實施例中,本地機10通過網絡連接發送請求410。該網絡可以是局域網(LAN)、城域網(MAN)或諸如因特網的廣域網(WAN)。本地機10和策略引擎406可以通過各種連接連接到網絡,各種連接包括標準電話線、LAN或WAN鏈接(例如Tl、T3、56kb、X.25)、寬帶連接(ISDN、幀中繼、ATM)和無線連接。本地機10和策略引擎10之間的連接可以使用各種數據鏈路層通信協議(例如TCP/IP、IPX、SPX、NetBIOS、NetBEUI、SMB、以太網、ARCNET、光纖分布式數據接口(FDDI)、RS232、IEEE802.11、IEEE802.lla、IEE802.llb、IEEE802.llg和直接異步連接)。該連接也可以是上述通信鏈路150。在接收到請求時,策略引擎406啟動由收集代理404進行的信息收集。收集代理404收集有關本地機10的信息并將信息412發送到策略引擎406。在一些實施例中,收集代理404通過網絡連接收集并發送信息412。在一些實施例中,收集代理404包括字節碼,例如以字節碼程序設計語言JAVA編寫的應用。在一些實施例中,收集代理404包括至少一個腳本。在這些實施例中,收集代理404通過在本地機10上運行至少一個腳本來收集信息。在一些實施例中,收集代理包括本地機10上的活動X控件。活動X控件是一種實現一組界面的專用部件對象模型(COM)的對象,所述界面使其看起來和運行起來像控件。在一個實施例中,策略引擎406向本地機10發送收集代理404。在一個實施例中,策略引擎406在收集代理404已經向策略引擎406發送過信息412之后要求第二次執行收集代理404。在本實施例中,策略引擎406可能沒有充分的信息412來判斷本地機10是否滿足特定的條件。在其他實施例中,策略引擎406響應于所接收的信息412要求多次執行收集代理404。在一些實施例中,策略引擎406向收集代理404發送指令,確定39收集代理404收集的信息類型。在這些實施例中,系統管理員可以配置從策略引擎406發送到收集代理404的指令。這對所收集的信息類型提供了更大控制。由于對所收集的信息類型更大的控制,這也擴展了策略引擎406能夠做出的訪問控制決定的類型。收集代理404所收集的信息412包括但不限于本地機10的機器ID、操作系統類型、操作系統補丁的存在、已安裝網卡的MAC地址、客戶端裝置上的數字水印、活動目錄中的成員身份、病毒掃描器的存在、個人防火墻的存在、HTTP報頭、瀏覽器類型、裝置類型、諸如網際協議地址或地址范圍的網絡連接信息、遠程機30的機器ID、包括改變時區的調節的訪問請求的日期或時間以及授權信任狀。在一些實施例中,裝置類型為個人數字助理。在其他實施例中,裝置類型為蜂窩電話。在其他實施例中,裝置類型為膝上電腦。在其他實施例中,裝置類型為臺式計算機。在其他實施例中,裝置類型為因特網信息站。在一些實施例中,數字水印包括數據嵌入。在一些實施例中,水印包括插入到文件中的圖案以提供有關文件的源信息。在其他實施例中,水印包括數據散列文件以提供竄改檢測。在其他實施例中,水印提供有關文件的版權信息。在一些實施例中,網絡連接信息涉及到帶寬能力。在其他實施例中,網絡連接信息涉及到網際協議地址。在其他實施例中,網絡連接信息由網際協議地址構成。在一個實施例中,網絡連接信息包括標識本地機向其提供認證信任狀的登錄代理的網絡分區。在一些實施例中,授權信任狀包括多個類型的認證信息,包括但不限于用戶名、客戶端名稱、客戶端地址、口令、PIN、語音示例、一次性通過代碼、計量生物學數據、數字證書、權證等以及其組合。在接收到所收集的信息412之后,策略引擎406基于所接收的信息412做出訪問控制決定。現在參考圖4B,方框圖示出了策略引擎406的一個實施例,包括第一部件420,第一部件包括條件數據庫422和登錄代理424,還包括第二部件430,第二部件包括策略數據庫432。第一部件420將來自條件數據庫422的條件施加到所接收的關于本地機10的信息并判斷所接收的信息是否滿足該條件。在一些實施例中,條件可以要求本地機io執行特定的操作系統以滿足該條件。在一些實施例中,條件可以要求本地機10執行特定的操作系統補丁以滿足該條件。在其他實施例中,條件可以要求本地機10為每個安裝的網卡提供MAC地址以滿足該條件。在一些實施例中,條件可以要求本地機10表明在特定活動目錄中的成員身份以滿足該條件。在另一個實施例中,條件可以要求本地機10執行病毒掃描器以滿足該條件。在其他實施例中,條件可以要求本地機10執行個人防火墻以滿足該條件。在一些實施例中,條件可以要求本地機10包括特定的裝置類型以滿足該條件。在其他實施例中,條件可以要求本地機10建立特定類型的網絡連接以滿足該條件。如果所接收的信息滿足條件,第一部件420在數據集426中存儲該條件的標識符。在一個實施例中,如果該信息使條件為真,則所接收的信息滿足條件。例如,條件可以要求安裝特定的操作系統。如果本地機10具有該操作系統,則條件為真且得到滿足。在另一個實施例中,如果該信息使條件為假,則所接收的信息滿足條件。例如,條件可以查詢本地機10上是否存在間諜軟件。如果本地機10不含有間諜軟件,該條件為假且得到滿足。在一些實施例中,登錄代理424駐留在策略引擎406之外。在其他實施例中,登錄代理424駐留在策略引擎406上。在一個實施例中,第一部件420包括登錄代理424,登錄代理424啟動對有關本地機10的信息收集。在一些實施例中,登錄代理424還包括數據存儲器。在這些實施例中,數據存儲器包括收集代理可以搜集信息的條件。該數據存儲器與條件數據庫422不同。在一些實施例中,登錄代理424通過執行收集代理404啟動信息搜集。在其他實施例中,登錄代理424通過將收集代理404發送到本地機10以在本地機10上執行來啟動信息搜集。在其他實施例中,登錄代理424在接收到信息412之后啟動額外的信息收集。在一個實施例中,登錄代理424還接收信息412。在本實施例中,登錄代理424基于所接收的信息412生成數據集426。在一些實施例中,登錄代理424通過將來自數據庫422的條件施加到從收集代理404接收的信息來生成數據集426。在另一個實施例中,第一部件420包括多個登錄代理424。在本實施例中,多個登錄代理424中的至少一個位于本地機IO可以從其發送資源請求的每個網域上。在本實施例中,本地機10向特定的登錄代理424發送資源請求'在一些實施例中,登錄代理424向策略引擎406發送本地機IO從其訪問登錄代理424的網域。在一個實施例中,本地機IO從其訪問登錄代理424的網域被稱為本地機10的網絡分區。條件數據庫422存儲第一部件420施加到所接收的信息上的條件。策略數據庫432存儲第二部件430施加到所接收的數據集426上的策略。在一些實施例中,條件數據庫422和策略數據庫432在與ODBC兼容的數據庫中存儲數據。例如,條件數據庫422和策略數據庫432可以被提供為由加利福尼亞RedwoodShores的ORACLECorporation制造的ORACLE數據庫。在其他實施例中,條件數據庫422和策略數據庫432可以是華盛頓Redmond的MicrosoftCorporation制造的MicrosoftACCESS數據庫或MicrosoftSQLserver數據庫。在第一部件420向條件數據庫422中的每個條件施加所接收的信息之后,第一部件向第二部件430發送數據集426。在一個實施例中,第一部件420向第二部件430僅發送數據集426。因此,在本實施例中,第二部件430不接收信息412,僅接收所滿足的條件的標識符.第二部件430接收數據集426并通過基于數據集426內標識的條件施加來自策略數據庫432的策略來做出訪問控制決定。在一個實施例中,策略數據庫432存儲被施加到所接收的信息412的策略。在一個實施例中,由系統管理員至少部分地指定策略數據庫432中存儲的策略。在另一個實施例中,用戶執行策略數據庫432中存儲的策略中的至少一些。將用戶指定的策略存儲為優選項。策略數據庫432可以存儲在易失性或非易失性存儲器中,或者,例如通過多個服務器分布。在一個實施例中,僅當滿足一個或多個條件時策略才允許訪問資源。在另一個實施例中,策略允許訪問資源但禁止將資源傳輸到本地機10。另一種策略可以根據請求訪問的本地機10位于安全網絡之內而建立連接。在一些實施例中,該資源為應用程序,且本地機10已請求執行應用程序。在這些實施例之一中,策略可以允許在本地機10上執行應用程序。在這些實施例的另一個中,策略可以使本地機10能夠接收包括應用程序的文件流。在本實施例中,可以在隔離環境中存儲并執行文件流。在這些實施例中的又一個中,策略可以僅允許在諸如應用服務器的遠程機上執行應用程序,并要求遠程機向本地機IO發送應用輸出數據。現在參考圖4C,流程圖示出了策略引擎406基于所接收的有關本地機10的信息做出訪問控制決定所采取的步驟的一個實施例。在接收所收集的有關本地機10的信息時(步驟450),策略引擎406基于信息生成數據集(步驟452)。數據集426包含所接收的信息412所滿足的每個條件的標識符.策略引擎406將策略施加到數據集426中的每個標識的條件上。該應用產生出本地機IO可以訪問的資源枚舉(步驟454)。策略引擎406然后向本地機10提供枚舉。在一些實施例中,策略引擎406生成用于向本地機提供枚舉的超級文本標志語言(HTML)文檔。參考圖4D,示出了根據本發明構建的網絡的一個實施例,其包括本地機IO、收集代理404、策略引擎406、策略數據庫408、條件數據庫410、本地機20、會話服務器420、所存儲應用數據庫422、遠程機30'、第一數據庫428、遠程機30"和第二數據庫432。筒而言之,當本地機10向訪問控制服務器406發送訪問應用程序的請求412時,收集代理404與本地機10通信,檢索關于本地機10的信息,并將本地機信息414發送到策略引擎406。如以上在圖4A和4B中所述,策略引擎406做出訪問控制決定。本地機IO接收對與本地機IO相關聯的可用應用的枚舉。在一些實施例中,會話服務器420在本地機10和與本地機10相關聯的多個應用會話之間建立連接.在其他實施例中,策略引擎406序的授權。在這些實施例之一中,遠程機30'存儲應用會話數據和包括應用程序的多個應用文件。在這些實施例的另一個中,本地機10與存儲應用會話數據和包括應用程序的多個應用文件的遠程機30'建立應用流傳輸會話。現在參考圖4E,流程圖示出了會話服務器420為本地機IO提供對其相關聯應用會話的訪問所采取的步驟的一個實施例。會話服務器420從含有策略引擎406所做出的訪問控制決定的策略引擎406接收有關本地機10的信息(步驟480)。會話服務器420生成相關應用枚舉(步驟482)。會話服務器420可以將本地機10連接到相關應用(步驟484)。在一個實施例中,該信息還包括本地機信息414。在另一個實施例中,該信息包括對在本地執行應用程序的授權。會話服務器420生成相關應用枚舉(步驟482)。在一些實施例中,策略引擎406標識已經與本地機10相關聯的多個應用會話。在其他實施例中,會話服務器420標識與本地機IO相關聯的已存儲應用會話。在這些實施例中的一些中,會話服務器420在從策略引擎406接收信息時自動標識所存儲的應用會話。在一個實施例中,所存儲應用數據庫422駐留在會話服務器420上。在另一個實施例中,所存儲應用數據庫422駐留在策略引擎406上。所存儲應用數據庫422含有與農場38中執行應用會話或提供對應用會話數據和包括應用程序的應用文件的訪問的多個遠程機相關的數據。在一些實施例中,識別與本地機IO相關聯的應用會話需要查詢與一個或多個遠程機相關聯的所存儲數據。在這些實施例中的一些中,會話存儲器420查詢與一個或多個遠程機相關聯的所存儲數據。在這些實施例中的其他實施例中,策略引擎406查詢與一個或多個遠程機相關聯的所存儲數據。在一些實施例中,第一應用會話在遠程機30'上運行,第二應用會話在遠程機30"上運行。在其他實施例中,所有的應用會話都在農場38之內的單個遠程機30上運行。會話服務器420包括與用戶發起的應用會話相關的信息。會話服務器可以存儲在易失性或非易失性存儲器中,或者,例如通過多個服務器分布。表1示出了在示例性會話服務器420的一部分中包括的數據<table>tableseeoriginaldocumentpage44</column></row><table>表1表1中的示例性會話服務器420包括將每個應用會話與發起該應用會話的用戶相關聯的數據、當前用戶從其連接到遠程機30'的客戶端計算機10或20的身份(如果有的話)、以及客戶端計算機10或20的IP地址。示例性會話服務器420還包括每個應用會話的狀態。例如,應用會話狀態可以是"活動,,(表示用戶連接到應用會話)或"斷開連接,,(表示用戶未連接到應用會話)。在替換實施例中,也可以將應用會話狀態設置成"執行中-斷開連接"(表示用戶已經從應用會話斷開連接,但應用會話中的應用仍在執行)或"停機-斷開連接"(表示用戶斷開連接且應用會話中的應用不在執行中,但它們的運行狀態恰在存儲斷開連接之前)。會話服務器420還存儲表示在每個應用會話中執行的應用116的信息以及表示服務器上每個應用的過程的數據。在遠程機30'為農場38的部分的實施例中,會話服務器420是動態存儲器的至少一部分,并且還包括表1中最后兩行中的數據,該數據表明每個應用正在/曽經在農場38中哪個遠程機30執行以及遠程機30的IP地址。在替換實施例中,會話服務器420包括用于每個應用會話中的每個應用的狀態指示符。例如,在表l的實例中,存在三個應用會話,即應用會話l、應用會話2和應用會話3。應用會話1與當前正使用終端1的用戶1相關。終端1的IP地址為152.16.2.50。應用會話1的狀態為活動,在應用會話1中正在執行文字處理程序。在服務器A上正在執行作為過程1的文字處理程序。服務器A的IP地址為152.16.2.55。表l中的應用會話2是斷開連接的應用會話118的實例。應用會話2與用戶2相關,但應用會話2未連接到本地機10或20。應用會話2包括在IP地址152.16.2.55處在服務器A上作為過程3執行的數據庫程序。應用會話3是用戶如何能夠與運行在不同遠程機30上的應用會話交互的實例。如應用會話1那樣,應用會話3與用戶1相關。應用會話3包括在IP地址152.16.2.56處在服務器B上作為過程2執行的電子表格程序,而應用會話l中包括的應用會話是在服務器A上執行的。在另一個實例中,用戶可以通過在諸如服務器A的遠程機30'上執行的應用會話訪問第一應用程序,同時跨過應用流傳輸會話與諸如服務器B的第二遠程機30"通信,以從第二遠程機30"檢索第二應用程序以在本地執行。本地機10的用戶在無法滿足第一應用程序的執行條件的同時,可能已經獲取了執行第二應用程序的授權。在一個實施例中,將會話服務器420配置成接收斷開請求,以斷開與本地機IO相關聯的應用會話并響應于該請求斷開該應用會話。在從應用會話斷開本地機10之后,會話服務器420繼續執行應用會話。在本實施例中,會話服務器420訪問所存儲應用數據庫422并更新與每個斷開連接的應用會話相關聯的數據記錄,使得該記錄表明與本地機IO相關聯的應用會話已斷開。在接收到與連接到網絡的本地機相關聯的認證信息之后,會話服務器420查詢所存儲應用數據庫422以查明是否有任何如下的活動應用會話,該活動應用會話與本地機的用戶相關聯,但是如果該認證信息例如與本地機20相關聯,該活動應用會話與不同的本地機,例如本地機10相連接。在一個實施例中,如果會話服務器420發現了任何這種活動應用會話,會話服務器420自動從本地機10斷開該應用會話并將應用會話連接到當前本地機20。在一些實施例中,所接收的認證信息將會限制本地機IO可以重新連接到的應用會話。在其他實施例中,在可能以將對本地機10否決授權的情況下,所接收的認證信息授權在本地機20上執行應用程序。在這些實施例之一中,會話服務器420可以提供本地機訪問信息以檢索應用程序從而在本地執行。接收請求以執行被枚舉的應用(步驟206)。在一個實施例中,本地機10的用戶從所接收的可用應用枚舉中選擇要執行的應用。在另一個實施例中,用戶獨立于所接收的枚舉選擇要執行的應用。在一些實施例中,用戶通過選擇客戶端代理在本地機10上提供的應用圖形表示來選擇要執行的應用。在其他實施例中,用戶通過選擇web服務器或其他遠程機3(K''上提供給用戶的應用圖解表示來選擇要執行的應用。在其他實施例中,用戶請求訪問文件。在這些實施例之一中,需要執行應用以為用戶提供對文件的訪問。在這些實施例的另一個中,在選擇要訪問的文件時自動選擇要執行的應用。在這些實施例中的又一個中,在請求訪問文件之前,將應用與一種文件類型相關聯,從而能夠在識別與所請求文件相關聯的文件類型時自動選擇應用。在一個實施例中,被枚舉的應用包括多個應用文件。在一些實施例中,多個應用文件駐留在遠程機30'上。在其他實施例中,多個應用46文件駐留在獨立的文件服務器或遠程機30"上。在其他實施例中,可以將多個應用文件傳輸到本地機10。在其他實施例中,可以在向本地機IO傳輸多個應用文件中的第二文件之前執行多個應用文件中的文件。在一些實施例中,遠程機30從遠程機30'檢索與被枚舉的應用相關的信息。在這些實施例之一中,遠程機30接收持有多個應用文件的遠程機30"的標識。在這些實施例的另一個中,遠程機30接收多個應用文件的位置的標識,該標識符合通用命名標準(UNC)。在這些實施例中的又一個中,該標識包括網絡位置和應用流傳輸協議的套接字。在一個實施例中,遠程機30檢索含有有關被枚舉的應用的信息的文件。該文件可以包括持有被枚舉的應用的服務器位置的標識。該文件可以包括持有被枚舉的應用的多個版本的標識。該文件可以包括多個應用文件的枚舉,該枚舉包括被枚舉的應用。該文件可以包括壓縮文件的標識,該壓縮文件包括多個應用文件,該多個應用文件包括,皮枚舉的應用。該文件可以包括執行被枚舉的應用的機器要滿足的前提條件的標識。該文件可以包括與被枚舉的應用相關聯的數據文件的枚舉。該文件可以包括要在執行被枚舉的應用的機器上執行的腳本的枚舉。該文件可以包括與被枚舉的應用相關聯的注冊數據的枚舉。該文件可以包括在隔離環境之中執行被枚舉的應用的實施例中使用的規則的枚舉。在一個實施例中,該文件可以被稱為"清單,,文件。結合以下圖21更詳細地描述該文件可以含有的信息。在一些實施例中,遠程機30向本地機10的凈皮標識特征應用策略。在這些實施例之一中,遠程機30響應于被標識的特征標識要執行的,皮枚舉的應用版本。在這些實施例的另一個中,遠程機30做出決定,執行與本地機10的特征兼容的被枚舉的應用版本。在這些實施例中的又一個中,遠程機30做出決定,執行與本地機10上執行的操作系統兼容的被枚舉的應用版本。在又一個實施例中,遠程機30做出決定,執行與本地機10上的操作系統的修訂級(revisionlevel)兼容的被枚舉的應用版本。在這些實施例之一中,遠程機30做出決定,執行與本地機IO上的操作系統指定的語言兼容的被枚舉的應用版本。響應于策略選擇執行被枚舉的應用的預定數量的方法之一,所述預定數量的方法包括用于被枚舉的應用的應用流傳輸的方法(步驟208)。在一個實施例中,響應于向所接收的與本地機10相關的信任狀應用策略來做出選擇。在一些實施例中,通過如以上在圖4A、圖4B和圖4C所述的策略引擎406的策略引擎做出選擇。在其他實施例中,引擎406.在一個實施例中,預定數量的方法包括在遠程機3(K上執行被枚舉的應用的方法。在另一個實施例中,預定數量的方法包括在本地機10上執行被枚舉的應用的方法。在又一個實施例中,預定數量的方法包括在第二遠程機30'上執行被枚舉的應用的方法。在一些實施例中,預定數量的方法包括跨越應用流傳輸會話向本地機10提供被枚舉的應用的方法。在這些實施例之一中,本地機10包括流傳輸服務代理,該流傳輸服務代理能夠發起與遠程機30'的連接并從遠程機30'接收所發送的數據包流。數據包流可以包括包括被枚舉的應用的應用文件。在一些實施例中,應用文件包括與應用程序相關聯的數據文件。在其他實施例中,應用文件包括執行應用程序所需的可執行文件。在其他實施例中,應用文件包括元數據,元數據包括與文件相關的信息,例如位置、兼容性要求、配置數據、注冊數據、在隔離環境中使用的執行腳本規則標識或授權要求。在一些實施例中,經流傳輸的應用在傳輸包括流傳輸應用的多個應用文件中的每個應用文件之前執行。在這些實施例之一中,在本地機IO接收到多個應用中的一個應用文件時開始執行經流傳輸的應用。在這些實施例的另一個中,在本地機IO接收到多個應用文件中的可執行應用文件時開始執行經流傳輸的應用。在這些實施例中的又一個中,本地機IO執行多個應用文件中第一個接收的應用文件,該第一個接收的應用文件請求訪問多個應用文件中的笫二應用文件。在一個實施例中,流傳輸的應用在本地機10上執行,而不永久駐留在本地機10上。在本實施例中,流傳輸的應用可以在本地機10上執行并在流傳輸的應用終止時從本地機10被刪除。在另一個實施例中,在將每個應用文件的預展開拷貝存儲在本地機10上之后在本地機10上執行流傳輸的應用。在又一實施例中,在將每個應用文件的拷貝存儲在本地機上的隔離環境中之后,在本地機10上執行流傳輸的應用。在又一個實施例中,在將每個應用文件的拷貝存儲在本地機10上的高速緩存中之后在本地機10上執行流傳輸的應用。在一個實施例中,響應于本地機IO可能接收到流傳輸的應用文件的判決,從預定數量的方法中選擇將應用流傳輸到本地機10的方法。在另一個實施例中,響應于本地機IO已經具有在本地執行流傳輸的應用文件授權的判決,從預定數量的方法中選擇將應用流傳輸到本地機10的方法。在其他實施例中,預定數量的方法包括向本地機10提供應用輸出數據的方法,所述應用輸出數據是在遠程機30上執行被枚舉的應用而生成的。在這些實施例之一中,遠程機30是接收執行被枚舉的應用的請求的遠程機30。在這些實施例中的另一個中,遠程機30為諸如文件服務器或應用服務器的第二遠程機30'。在一些實施例中,被枚舉的應用駐留在執行被枚舉的應用的遠程機30'上。在其他實施例中,執行被枚舉的應用的遠程機30'首先跨越應用流傳輸會話從第二遠程機3(K接收被枚舉的應用。在這些實施例之一中,遠程機30'包括流傳輸服務代理,該流傳輸服務代理能夠發起與第二遠程機3(K的連接并從第二遠程機30'接收所發送的數據流。在這些實施例的另一個中,可以利用負載均衡技術標識第二遠程機30'。在這些實施例的又一個中,可以基于與遠程機3(K的接近情況標識第二遠程機3(K。將結合以下的圖9更詳細地描述這些實施例。在一些實施例中,遠程機30從執行被枚舉的應用的預定數量的方法中選擇用于將被枚舉的應用流傳輸到遠程機30、在遠程機30上執行數據的方法。在這些實施例之一中,遠程機30響應于本地機10的評估而選擇方法。在這些實施例的另一個中,響應于將策略應用于評估本地機10來做出判決。在這些實施例的又一個中,響應于對所接收的信任狀的評估做出判決。在一個實施例中,遠程機30接收包括被枚舉的應用的多個應用文件。在另一個實施例中,遠程機30通過諸如ICA表示層協議或遠程桌面窗口表示層協議或X-窗口表示層協議的表示層協議提供應用輸出數據。在一些實施例中,遠程機30還提供與被枚舉的應用相關聯的訪問信息,該訪問信息是響應于選定的方法而產生的。在這些實施例之一中,訪問信息向本地機1o提供所選定的執行被枚舉的應用程序的方法的表示。在這些實施例的另一個中,訪問信息包括被枚舉的應用的位置標識,該標識符合通用命名標準(UNC)。在這些實施例的又一個中,訪問信息包括會話管理服務器的標識。在一些實施例中,訪問信息包括啟動權證(launchticket),啟動權證包括認證信息。在這些實施例之一中,本地機10可以使用該啟動權證來認證從遠程機30接收的訪問信息。在這些實施例的另一個中,本地機10可以使用啟動權證來向持有被枚舉的應用的第二遠程機30認證它自身。在這些實施例的又一個中,遠程機30響應于本地機10對啟動權證的請求在訪問信息中包括啟動權證。現在參考圖5,方框圖示出了本發明的一個實施例,其中,本地機IO請求執行應用程序,而遠程機30選擇執行應用程序的方法。在一個實施例中,遠程機30從本地機10接收信任狀。在另一個實施例中,遠程機30從本地機IO接收對可用應用枚舉的請求。在一些實施例中,提供了多個冗余的遠程機30、30'、30"、30〃'和30〃"。在這些實施例之一中,例如,可以有多個文件服務器、多個會話管理服務器、多個分級機、多個web接口或多個訪問套件控制臺。在這些實施例的另一個中,如果遠程機出現故障,則選擇冗余的遠程機30來提供出故障機器的功能。在其他實施例中,盡管將遠程機30、3(K、30"、3(K〃和30""以及web接口558和訪問套件控制臺520描述為具有管理服務器、會話管理服務器、分級機、文件服務器、web服務器和訪問套件控制臺的獨立功能,但可以提供具有所有這些機器的功能的單個遠程機30。在其他實施例中,遠程機30可以提供其他遠程機之一或多個的功能和服務。現在更詳細地參考圖5,方框圖示出了提供對應用程序的訪問的遠程機30的一個實施例。除了上文參考圖1D所述的接口和子系統之外,遠程機30還可以包括管理通信服務514、XML服務516和管理服務504。管理服務504可以包括應用管理子系統506、服務器管理子系統508、會話管理子系統510和許可管理子系統512。遠程才幾30可以與訪問套件控制臺520通信。在一個實施例中,管理服務504還包括專用遠程過程調用子系統、MetaFrame遠程過程調用(MFRPC)子系統522。在一些實施例中,MFRPC50子系統522在遠程機30上諸如XML服務516和管理服務504的子系統之間對通信進行路由。在其他實施例中,MFRPC子系統522提供用于調用管理功能的遠程過程調用(RPC)接口,提供對管理服務504的RPC調用并向發起調用的子系統返回結果。在一些實施例中,遠程機30與諸如以上圖4B所述的協議機406的協議機通信。在這些實施例之一中,遠程機30與駐留在遠程機3(K上的協議機406通信。在其他實施例中,遠程機30還包括協議機406。遠程機30可以與訪問套件控制臺520通信。訪問套件控制臺520可以持有管理工具,供遠程機30或農場38的管理員使用。在一些實施例中,遠程機30利用XML與訪問套件控制臺5W通信。在其他實施例中,遠程機30利用簡單對象訪問協議(SOAP)與訪問套件控制臺520通信。對于諸如圖1D和圖5中所述的那些遠程機30包括子系統子集的實施例,管理服務可以包括多個子系統。在一個實施例中,每個子系統或者是單線程的或者是多線程的子系統。線程是多任務環境中運行的獨立執行流。單線程子系統能夠一次僅執行一個線程。多線程子系統能夠支持多個并行執行的線程,即,多線程子系統可以同時執行多個任務。應用管理子系統506關于與能夠被流傳輸的多個應用相關的信息。在一個實施例中,應用管理子系統506處理來自其他部件的請求,例如存儲、刪除、更新、枚舉或解析應用的請求。在另一個實施例中,應用管理子系統506處理由與能夠被流傳輸的應用相關的部件發送的請求。可以將這些事件分成三種事件應用發布、應用枚舉和應用啟動,以下將詳細描述每種。在其他實施例中,應用管理子系統506還包括對應用解析、應用公開和應用發布的支持。在其他實施例中,應用管理子系統506使用數據暫存器存儲應用性質和策略。服務器管理子系統508處理對于在服務器農場配置中的應用流傳輸特定的配置。在一些實施例中,服務器管理子系統508還處理需要檢索與農場38的配置相關的信息的事件。在其他實施例中,服務器管理子系統508處理由與跨應用流傳輸提供對應用的訪問的遠程機相關的其他部件發出的事件和這些遠程機的性質。在一個實施例中,服務器管理子系統508存儲遠程機性質和農場性質。在一些實施例中,遠程機30還包括為一個或多個專用應用子系統提供服務的一個或多個〃>共應用子系統524。這些遠程機30也可以具有一個或多個為一個或多個專用遠程機子系統提供服務的公共遠程機子系統。在其他實施例中,不提供公共應用子系統524,每個專用應用和遠程機子系統都實施所有所需的功能。在遠程機30包括公共應用子系統524的一個實施例中,公共應用子系統524管理所發布應用的公共性質。在一些實施例中,公共應用子系統524處理需要檢索與所發布應用或公共性質相關的信息的事件。在其他實施例中,7>共應用子系統524處理由與/^共應用或它們的性質相關的其他部件發送的所有事件。公共應用子系統524可以向農場38"發布"應用,這使得本地機10可以枚舉和啟動每個應用。通常,在希望能使用該應用的每個遠程機30上安裝該應用。在一個實施例中,為了發布應用,管理員運行管理工具,執行信息,例如持有該應用的遠程機30、每個遠程機上的可執行文件名稱、要執行應用的本地機所需的能力(例如音頻、視頻、加密等)以及能使用該應用的用戶列表。將這種執行的信息分成應用特定信息和公用信息。應用特定信息的實例為訪問該應用的路徑名以及用于運行應用的可執行文件的名稱。公用信息(即公共應用數據)例如包括應用的用戶友好的名稱(例如"MicrosoftWORD2000")、應用的唯一標識和應用的用戶。可以將應用特定信息和公用信息發送到控制持有應用的每個遠程機30上的應用的專用應用子系統。專用應用子系統可以將應用特定信息和公用信息寫入持久存儲器240中。在提供公共應用子系統524時,公共應用子系統524也提供了用于管理農場38中所發布應用的設施。通過公共應用子系統524,管理員能夠利用諸如訪問套件控制臺520的管理工具來管理農場38的應用,以配置應用組并產生這些應用組的應用樹形體系。每個應用組可以表示成應用樹形體系中的文件夾。應用樹形體系中的每個應用文件夾可以包括一個或多個其他應用文件夾和遠程機的特定實例。公共應用子系統524提供了生成、移動、重命名、刪除和枚舉應用文件夾的功能。在一個實施例中,公共應用子系統524在處理應用枚舉和應用解析請求時支持應用管理子系統506。在一些實施例中,公共應用子系統524提供了響應于數據文件類型和處理該數據文件類型的應用之間的映射而識別要執行的應用的功能。在其他實施例中,第二應用子系統提供了文件類型關聯的功能。在一些實施例中,遠程機30還可以包括策略子系統。策略子系統輸到本地機10的策略規則。在一些實施例中,策略子系統標識出與訪問套件控制臺520中發布的流傳輸的應用相關聯的服務器訪問選項。在這些實施例之一中,策略子系統將服務器訪問選項用作代替策略規則的策略,會話監測子系統510維持和更新與本地機10相關聯的應用流傳輸會話的會話狀態并執行應用流傳輸會話的許可要求。在一個實施例中,會話管理子系統510監測會話并記錄事件日志,所述事件例如是應用的啟動或應用流傳輸會話的終止。在另一個實施例中,會話監測子系統510接收從本地機10向遠程機30發送的通信,例如心跳消息。在又一個實施例中,會話管理子系統510對來自管理工具,例如訪問套件控制臺520中的工具的有關會話的查詢做出響應。在一些實施例中,管理服務504還包括與會話管理子系統通信的許可管理子系統,以提供并維持對本地機執行應用的許可。在一個實施例中,管理服務504提供用于應用枚舉和應用解析的功能。在一些實施例中,管理服務504還提供用于應用啟動、會話監測和跟蹤、應用發布和許可執行的功能。現在參考圖6,方框圖示出了包括提供應用枚舉的管理服務的遠程機30的一個實施例。管理服務504可以利用與XML服務516交互的web接口提供應用枚舉。在一個實施例中,XML服務516為本地機10的用戶枚舉應用。在另一個實施例中,XML服務516實施上述ICA瀏覽器子系統和程序鄰域子系統的功能。XML服務516可以與管理通信服務514交互。在一個實施例中,XML服務516利用管理通信服務514生成應用枚舉請求。應用枚舉請求可以包括表明在執行被枚舉的應用時使用的執行方法的客戶端類型。應用枚舉請求被發送到公共應用子系統524。在一個實施例中,y^共應用子系統524返回與應用枚舉請求的客戶端類型相關聯的應用的枚舉。在另一個實施例中,公共應用子系統52453返回本地機10的用戶可用的應用枚舉,該枚舉是響應于向與本地機10相關的信任狀應用策略選擇的。在本實施例中,'策略引擎406可以向收集代理404收集的信任狀應用策略,如以上參考圖4所述。在又一個實施例中,返回應用枚舉并推遲向本地機IO應用策略,直到請求執行被枚舉的應用為止。管理服務504可以提供應用解析服務,用于識別持有應用的第二遠程機30'。在一個實施例中,第二遠程機30'是文件服務器或應用服務器。在一些實施例中,管理服務504從包括標識符的文件查詢持有應用的多個遠程機30。在一個實施例中,管理服務504響應于本地機10執行應用的請求提供應用解析服務。在另一個實施例中,管理服務504識別出能夠實施與第一遠程機30不同的執行應用的方法的第二遠程機3(K。在一些實施例中,管理服務504識別出能夠將應用程序流傳輸到本地機10的第一遠程機3(K以及能夠執行應用程序并向本地機10提供執行應用程序所產生的應用輸出數據的第二遠程機30'。在一個實施例中,Web接口向XML服務516發送應用解析請求。在另一個實施例中,XML服務516接收應用解析請求并將請求發送到MFRPC子系統522。在一個實施例中,MFRPC子系統522識別出所接收的應用解析請求中包括的客戶端類型。在另一個實施例中,MFRPC子系統向客戶端類型應用策略并決定向本地機10"流傳輸,,該應用。在本實施例中,MFRPC子系統522可以向應用管理子系統506轉發應用解析請求。在一個實施例中,在從MFRPC子系統522接收到應用解析請求時,應用管理子系統506可以識別出作為本地機10的會話管理服務器562工作的遠程機3(T出。在一些實施例中,本地機向會話管理服務器562發送心跳消息。在另一個實施例中,應用管理子系統506可以識別出持有包括要流傳輸到本地機10的應用的多個應用文件的遠程機30'。在一些實施例中,應用管理子系統506使用枚舉了多個持有多個應用文件的遠程機的文件來識別遠程機30、在其他實施例中,應用管理子系統506識別出IP地址與本地機10的IP地址類似的遠程才幾30'。在其他實施例中,應用管理子系統506識別出IP地址在本地機10可訪問的IP地址范圍內的遠程機30'。在又一個實施例中,MFRPC子系統522向客戶端類型應用策略并判定可以在遠程機30'上執行該應用,該遠程機30'向本地機IO發送執行應用產生的應用輸出數據。在本實施例中,MFRPC子系統522可以向公共應用子系統524轉發應用解析請求以檢索遠程機3(K的宿主機地址的標識符。在一個實施例中,被識別的遠程機30'可以利用諸如ICA或RDP或X窗口的表示層協議向本地機發送應用輸出數據。在一些實施例中,遠程機30'跨越應用流傳輸會話從第二遠程機3(K接收應用。在一個實施例中,在完成應用枚舉和應用解析時,將訪問信息發送到本地機10,該訪問信息包括用于執行被枚舉的應用的方法的標識和持有被枚舉的應用的遠程機3(K的標識符。在管理服務504確定將要在本地機10上執行被枚舉的應用的一個實施例中,web接口創建含有有關被枚舉的應用的解析域名信息的文件并將其發送到本地機10。在一些實施例中,可以利用".rad,,擴展名標識該文件。本地機10可以響應于所接收文件的內容執行被枚舉的應用。表2示出了該文件中所含信息的一個實施例<table>tableseeoriginaldocumentpage55</column></row><table>表2該文件還含有本地機執行應用時所用的啟動權證,如表2所述。在一些實施例中,啟動權證在預定一段時間之后期滿。在一個實施例中,本地機向持有要執行的被枚舉應用的遠程機提供啟動權證。使用啟動權證授權本地機的用戶訪問被枚舉的應用有助于防止用戶重復使用該文件或者生成該文件未授權版本以不適當地訪問應用。在一個實施例中,該啟動權證包括大的、隨機生成的數字。如以上參考圖2所述,在接收到與本地機10或本地機10的用戶相關的信任狀時開始選擇執行應用程序的方法的方法(步驟202),并響應于所接收的信任狀提供本地機10可用的多個應用程序的枚舉(步稞2(M)。接收請求來執行被枚舉的應用(步驟206)并響應于策略選擇執行被枚舉的應用的預定數量的方法之一,所述預定數量的方法包括用于被枚舉的應用的應用流傳輸的方法(步驟208)。現在參考圖7,流程圖示出了訪問包括應用程序多個文件所采取的步驟的一個實施例。本地機執行本地機的啟動前分析(步驟210)。在一個實施例中,本地機IO在檢索和執行包括應用程序的多個應用文件之前執行啟動前分析。在另一個實施例中,本地機10響應于所接收的指示執行啟動前分析,該指示表明為了授權訪問包括應用程序的多個應用文件需要進行啟動前分析。在一些實施例中,本地機10從遠程機30接收與多個應用文件相關聯的訪問信息。在這些實施例之一中,訪問信息包括持有多個應用文件的遠程機30'的位置的標識。在這些實施例的另一個中,本地機10接收包括應用程序的一個或多個版本的多個應用的標識。在這些實施例的又一個中,本地機IO接收包括一個或多個應用程序的多個應用文件的標識。在其他實施例中,本地機10接收本地機10可用的應用程序枚舉,以進行檢索和執行。在這些實施例之一中,枚舉來源于對本地機10的評估。在其他實施例中,本地機10響應于所檢索的包括應用程序的多個應用文件的標識,檢索至少一個特征。在一些實施例中,訪問信息包括能夠授權本地機訪問多個應用文件的啟動權證。在這些實施例之一中,響應于對本地機10的評估向本地機10提供啟動權證。在這些實施例的另一個中,在本地機10進行本地機10的啟動前分析之后向本地機IO提供啟動權證。在其他實施例中,本地機IO檢索用于執行多個應用文件所需的至少一個特征。在這些實施例之一中,訪問信息包括至少一個特征。在這些實施例的另一個中,訪問信息表明了本地機IO檢索的文件位置,該文件枚舉了至少一個特征。在這些實施例的又一個中,枚舉至少一程機30的才示識'本地機IO判斷本地機上至少一個特征的存在。在一個實施例中,本地機IO作為啟動前分析的一部分執行該判斷。在另一個實施例中,本地機10判斷本地機10是否具有至少一個特征。在一個實施例中,判斷本地機IO上是否存在至少一個特征包括判斷是否在本地機上安裝了設備驅動程序。在另一個實施例中,判斷本地機10上是否存在至少一個特征包括判斷是否在本地機10上安裝了操作系統。在又一實施例中,判斷本地機10上是否存在至少一個特征包括判斷是否在本地機IO上安裝了特定的操作系統。在又一個實施例中,判斷本地機10上是否存在至少一個特征包括判斷是否在本地機10上安裝了特定版本水平的操作系統。在一些實施例中,判斷本地機io上是否存在至少一個特征包括判斷本地機IO是否已經獲得了執行被枚舉的應用的授權。在這些實施例之一中,由本地機10判斷本地機10是否已接收到執行被枚舉的應用的許可。在這些實施例的另一個中,由本地機10判斷本地機10是否已接收到跨越應用流傳輸會話接收包括被枚舉的應用的多個應用文件的許可。在其他實施例中,判斷本地機10上是否存在至少一個特征包括判斷本地機10是否具有檢索和執行被枚舉應用的足夠大的可用帶寬。在一些實施例中,判斷本地機io上是否存在至少一個特征包括在本地機10上執行腳本。在其他實施例中,判斷本地機10上是否存在至少一個特征包括在本地機io上安裝軟件。在其他實施例中,判斷本地機10上是否存在至少一個特征包括在本地機10上修改注冊表。在又一實施例中,判斷本地機IO上是否存在至少一個特征包括向本地機10傳輸收集代理404以在本地機10上執行,用來收集與本地機10相關的信任狀。本地機10從遠程機30請求執行多個應用文件的授權,該請求包括啟動權證(步驟212)。在一些實施例中,本地機10響應于本地機10上是否存在至少一個特征的判斷做出請求。在這些實施例之一中,本地機10判定本地機10上存在多個特征,該多個特征與被枚舉的應用相關并是響應于執行被枚舉應用的請求而接收的。在這些實施例的57另一個中,本地機IO是否接收到執行被枚舉的應用文件的授權的指示取決于本地機10上是否存在至少一個特征。在一個實施例中,本地機10接收應用程序的枚舉,請求執行被枚舉的應用并接收訪問信息,該訪問信息包括至少一個特征和啟動權證,該啟動權證授權在判定本地機10上存在至少一個特征時執行被枚舉的應用。在一個實施例中,本地機10從遠程機30接收授權執行多個應用文件的許可。在一些實施例中,該許可授權在預定時間期間內執行。在這些實施例之一中,該許可要求傳輸心跳消息,以維持執行多個應用文件的授權。在另一個實施例中,本地機IO從遠程機30接收許可以及與監測多個應用文件的執行的遠程機30相關的標識符。在一些實施例中,如以上圖5所示,遠程機是會話管理服務器562。在這些實施例之一中,會話管理服務器562包括監測與本地機10相關的會話的會話管理子系統510。在其他實施例中,獨立的遠程機30〃〃為會話管理服務器562。本地機IO接收并執行多個應用文件(步驟214)。在一個實施例中,本地機IO跨越應用流傳輸會話接收多個應用文件。在另一個實施例中,本地機10在本地機10上的隔離環境中存儲多個應用文件。在又一個實施例中,本地機IO在接收多個應用文件中的第二個之前執行多個應用文件之一。在一些實施例中,遠程機向多個本地機發送多個應用文件,多個本地機中的每個本地機已經與遠程機建立了獨立的應用流傳輸會話。在一些實施例中,本地機IO在高速緩存中存儲多個應用文件并延遲執行應用文件。在這些實施例之一中,本地機IO接收授權以在預定時間段期間執行應用文件。在這些實施例的另一個中,當本地機10沒有對網絡訪問時,本地機10接收授權以在預定時間段內執行應用文件。在其他實施例中,本地機在高速緩存中存儲多個應用文件。在這些實施例之一中,應用流傳輸客戶端552建立內部應用流傳輸會話以從高速緩存檢索多個應用文件。在這些實施例的另一個中,當本地機10沒有對網絡訪問時,本地機10接收授權以在預定時間段內執行應用文件。本地機10向遠程機發送至少一個心跳消息(步驟216)。在一些實施例中,本地機IO發送至少一個心跳消息以維持授權,以執行包括被枚舉的應用的多個應用文件。在其他實施例中,本地機10發送至少一個心跳消息以維持授權,以檢索多個應用文件中的應用文件.在其他實施例中,本地機10接收許可,該許可授權在預定時間段中執行多個應用文件。在一些實施例中,本地機10向第二遠程機30"〃發送心跳消息。在這些實施例之一中,第二遠程機30"〃可以包括監測多個應用文件的檢索和執行的會話管理服務器562。在這些實施例的另一個中,第二遠程機30'"'可以響應于所發送的心跳消息更新授權執行多個應用文件的許可。在這些實施例的又一個中,第二遠程機30〃〃可以響應于所發送的心跳消息向本地機IO發送命令。返回到圖5,本地機10可以包括應用流傳輸客戶端552、流傳輸服務554和隔離環境556。應用流傳輸客戶端552可以是可執行程序。在一些實施例中,應用流傳輸客戶端552可以能啟動另一可執行程序。在其他實施例中,應用流傳輸客戶端552可以發起流傳輸服務554。在這些實施例之一中,應用流傳輸客戶端552可以為流傳輸服務554提供與執行應用程序相關的參數。在這些實施例的另一個中,應用流傳輸客戶端552可以利用遠程過程調用發起流傳輸服務554.在一個實施例中,本地機10請求執行應用程序并從遠程機30接收關于執行的訪問信息。在另一個實施例中,應用流傳輸客戶端552接收該訪問信息。在又一個實施例中,應用流傳輸客戶端552向流傳輸服務554提供訪問信息。在又一個實施例中,訪問信息包括與包括應用程序的多個應用文件相關的文件位置的標識。在一個實施例中,流傳輸服務554檢索與多個應用文件相關的文件。在一些實施例中,被檢索的文件包括多個應用文件的位置標識。在這些實施例之一中,流傳輸服務554檢索多個應用文件。在這些實施例的另一個中,流傳輸服務554在本地機10上執行所檢索的多個應用文件。在其他實施例中,流傳輸服務554向遠程機發送心跳消息以保持對檢索和執行多個應用文件的授權。在一些實施例中,所檢索的文件包括超過一個多個應用文件的位置標識,每一多個應用文件包括不同的應用程序。在這些實施例之一中,流傳輸服務554檢索包括與本地機10兼容的應用程序的多個應用文件。在這些實施例的另一個中,流傳輸服務554響應于對本地機1059的評估接收對檢索特定多個應用文件的授權。在一些實施例中,在諸如CAB、ZIP、SIT、TAR、JAR的檔案文件或其他檔案文件中壓縮多個應用文件并將其存在文件服務器上。在一個實施例中,存儲在檔案文件中的多個應用文件包括應用程序。在另一個實施例中,存儲在檔案文件中的多個多個應用文件的每個包括應用程序的不同版本。在又一個實施例中,存儲在檔案文件中的多個多個應用文件的每個包括不同的應用程序。在一些實施例中,檔案文件包括與多個應用文件中的每個文件相關聯的元數據。在這些實施例之一中,流傳輸服務554響應于所包括的元數據產生目錄結構。如下文將要參考圖12更詳細描述的,可以用元數據來滿足應用程序對目錄枚舉的請求。在一個實施例中,流傳輸服務554對檔案文件解壓以獲取多個應用文件。在另一個實施例中,流傳輸服務554在從多個應用文件檢索文件之前判斷本地機10上的高速緩沖存儲器中是否存在多個應用文件之內的文件的本地拷貝。在又一個實施例中,文件系統過濾器驅動程序564判斷高速緩沖存儲器中是否存在本地拷貝。在一些實施例中,流傳輸服務554在檢索多個應用文件之內的文件之前修改注冊項。在一些實施例中,流傳輸服務554在本地機10上的高速緩沖存儲器中存儲多個應用文件。在這些實施例之一中,流傳輸服務554可以提供在接收到高速緩存多個應用文件的請求時高速緩存多個應用文件的功能。在這些實施例的另一個中,流傳輸服務554可以提供在本地機10上固定高速緩沖存儲器的功能。在這些實施例的另一個中,流傳輸服務554可以使用算法來調節高速緩沖存儲器的大小和位置。在一些實施例中,流傳輸服務554在本地機10上生成隔離環境556。在這些實施例之一中,流傳輸服務554使用隔離環境應用編程接口生成隔離環境556。在這些實施例的另一個中,流傳輸服務554在隔離環境556中存儲多個應用文件。在這些實施例的又一個中,流傳輸服務554在隔離環境之內執行多個應用文件中的文件。在這些實施例中的又一個中,流傳輸服務554在隔離環境中執行應用程序。對于接收到在本地機10上執行應用的授權的實施例而言,可以在隔離環境556中發生應用的執行。在一些實施例中,在執行應用之前在本地機10上存儲包括應用的多個應用文件。在其他實施例中,在執行應用之前在本地機10上存儲多個應用文件的子集。在其他實施例中,多個應用文件不駐留在隔離環境556中。在其他實施例中,多個應用的子集不駐留在本地機10上。無論多個應用文件的子集或多個應用文件中的每個應用文件是否駐留在本地機10上或隔離環境556中,在一些實施例中,都可以在隔離環境556中執行多個應用文件中的應用文件。隔離環境556可以由核心系統構成,該核心系統能夠提供文件系統虛擬化、注冊系統虛擬化和命名對象虛擬化,以減少應用兼容性問題,而無須向應用源代碼的任何變化。隔離環境556在用于注冊和命名對象虛擬化的用戶模式中以及在使用文件系統過濾器驅動程序進行文件系統虛擬化的內核程序中都可以利用轉播來重定向應用資源請求。下文是對隔離環境556的一些實施例的描述。現在參考圖8A,示出了在具有較少應用兼容性和應用交際性問題的操作系統8100的控制下運行的計算機的一個實施例。操作系統8100通過其系統層8108使應用程序8112、8114能夠使用各種本地資源。將把系統層8108收錄的資源視圖稱為"系統范圍"。為了避免應用程序8112、8114對本地資源8102、8104、8106、8107的沖突訪問,提供隔離環境8200。如圖8A所示,隔離環境8200包括應用隔離層8220和用戶隔離層8240。從概念上講,隔離環境8200通過應用隔離層8220為應用程序8112、8114提供諸如文件系統8102、注冊表8104、對象8106和窗口名稱8107的本地資源的獨特視圖。每個隔離層修改提供給應用的本地資源視圖。將把層提供的修改后的本地資源視圖稱為該層的"隔離范圍"。如圖8A所示,應用隔離層包括兩個應用隔離范圍8222、8224。范圍8222表示提供給應用8112的本地資源視圖,范圍8224表示提供給應用8114的本地資源視圖。于是,在圖8A所示的實施例中,為APP18112提供文件系統8102'的特定視圖,而為APP28114提供對其特有的文件系統8102"的另一視圖。在一些實施例中,應用隔離層8220向在操作系統8100上執行的每一個體應用程序提供本地資源8102、8104、8106、8107的特定視圖。在其他實施例中,可以將應用程序8112、8114分成組,在這些實施例中,應用隔離層8220提供每組應用程序的本地資源的特定視圖。可以將沖突的應用程序放入分開的組中以提高應用的兼容性和交際性。在其他實施例中,可以由管理配置屬于一組的應用。在一些實施例中,可以將"穿過"隔離范圍定義為精確對應于系統范圍。換言之,在穿過隔離范圍之內執行的應用直接在系統范圍上運行。在一些實施例中,進一步將應用隔離范圍分成分層子范圍。主子范圍包含基本應用隔離范圍,額外的子范圍包含可以由應用的多個執行實例看得見的對該范圍的各種修改。例如,子范圍可以包含對范圍的修改,該修改體現出應用補丁水平的改變或額外特征的安裝或移除。在一些實施例中,被使得對執行應用的實例可見的額外子范圍的組是可以配置的。在一些實施例中,可見子范圍的組對于執行應用的所有實例而言都是相同的,不論是代表哪個用戶執行應用的。在其他實施例中,該組可見子范圍可以相對于執行應用的不同用戶而變化。在其他實施例中,可以定義多組子范圍,用戶對于使用哪組可以具有選擇機會。在一些實施例中,在不再需要時可以拋棄子范圍。在一些實施例中,可以將一組子范圍中包含的修改合并到一起來形成單個子范圍。現在參考圖8B,示出了具有減少的應用兼容性和應用交際性問題的多用戶計算機。多用戶計算機包括系統層8108中的本地資源8102、8104、8106、8107以及上文剛剛討論過的隔離環境8200。應用隔離層8220如上所迷運行,為應用或應用組提供本地資源的修改視圖。從概念上講,用戶隔離層8240為應用程序8112、8114提供本地資源視圖,基于代表其執行應用的用戶身份進一步改變該本地資源視圖。如圖8B所示,用戶隔離層8240可以被認為包括若干用戶隔離范圍8242'、8242"、8242'''、8242'"'、8242'〃〃(統稱為8242)。用戶隔離范圍8242提供本地資源的應用特異性視圖的用戶特異性視圖。例如,為代表用戶"a,,在用戶會話8110中執行的APP18112提供由用戶隔離范圍8242'和應用隔離范圍8222二者改變或修改的文件系統視圖8102'(a)。換言之,用戶隔離層8240通過在應用隔離范圍8222提供的應用特異性視圖修改上"層疊"用戶隔離范圍8242'"提供的用戶特異性視圖修改(該應用特異性視圖修改又被層疊在系統層提供的本地資源的系統范圍視圖之上)來為每個個體用戶改變本地資源視圖。例如,當APP18112的第一實例訪問注冊表數據庫8104中的條目時,查詢對第一用戶會話和應用8104'(a)特定的注冊表數據庫視圖。如果在注冊表8104'(a)的用戶特異性視圖中找到了所請求的注冊表項,則將該注冊表項返回到APP18112。如果沒有找到,則查詢對應用8104'特定的注冊表數據庫視圖。如果在注冊表8104'的應用特異性視圖中找到了所請求的注冊表項,則將該注冊表項返回到APP18112。如果未找到,則將系統層8108中的注冊表數據庫8104中存儲的注冊表項(即本地注冊表項)返回到APP18112。在一些實施例中,用戶隔離層8240為每一個體用戶提供隔離范圍。在其他實施例中,用戶隔離層8240為一組用戶提供隔離范圍,該組用戶可以由組織內的分工界定或可以由管理員預先確定。在其他實施例中,不提供用戶隔離層8240。在這些實施例中,應用程序看到的本地資源視圖是由應甩隔離層8220提供的視圖。雖然針對支持多個用戶同時執行應用程序的多用戶計算機描述了隔離環境8200,但隔離環境8200也可以用在單用戶計算機上,以解決因不同用戶在同一計算機系統上順次執行應用程序而造成的應用兼容性和交際性問題以及因同一用戶安裝和執行不兼容程序而造成的那些問題。在一些實施例中,進一步將用戶隔離范圍分成子范圍。用戶隔離范圍對向在該范圍中執行的應用提供的視圖所做的修改是該范圍中每個子范圍之內所含的修改匯集。將子范圍彼此層疊,在匯集視圖中,對較高子范圍中的資源所做的修改優先于對較低層中同一資源的修改。在這些實施例中的一些中,這些子范圍中的一個或多個可以包含對相對于用戶特定的視圖的修改。在這些實施例中的一些中,一個或多個子范圍可以包含對相對于用戶組特定的視圖的修改,用戶組可以由系統管理員定義或被定義為操作系統中的用戶組。在這些實施例中的一些中,這些子范圍之一可以包含對相對于特定登錄會話特定并因此在會話結束時被拋棄的視圖的修改。在這些實施例中的一些中,與用戶隔離范圍相關聯的應用實例對本地資源所做的改變總是影響這些子范圍之一,在其他實施例中,根據所改變的特定資源,這些改變可能會影響不同的子范圍。上述概念性體系允許為代表用戶執行的應用提供本地資源的匯集、或統一的虛擬化j見圖,這取決于應用和用戶的組合。可以將這種匯集視圖稱為"虛擬范圍,,。為代表用戶執行的應用實例提供反應本資源的所有有效虛擬化實例的單個本地資源視圖。從概念上講,這種匯集視圖首先由系統范圍中的操作系統提供的本地資源組構成,該本地資源組被適用于執行應用的應用隔離范圍中所體現的修改覆蓋,進一步被適用于代表用戶執行應用的用戶隔離范圍中體現的修改覆蓋。系統范圍中的本地資源的特征在于由系統上的所有用戶和應用共有,除非在操作系統許可拒絕對特定用戶或應用訪問的情況下。對應用隔離范圍中體現的資源視圖的修改的特征在于由和該應用隔離范圍相關聯的所有應用實例共有。對用戶隔離范圍中體現的資源視圖的修改的特征在于,由和適用的應用隔離范圍相關聯的、代表與該用戶隔離范圍相關聯的用戶執行的所有應用共有。可以將該概念擴展到子范圍;對用戶子范圍中體現的資源視圖的修改由與適用隔離子范圍相關聯的、代表與用戶隔離子范圍相關聯的用戶或用戶組執行的所有應用共有。在整個說明書中,應當理解,無論何時總括性提到"范圍",也意在是指子范圍(如果它們存在的話)。當應用請求枚舉諸如文件系統或注冊表數據庫一部分的本地資源時,首先枚舉本地資源"系統范圍的,,實例,即在系統層中發現的實例(如果有的話),由此構建虛擬化枚舉。接下來,枚舉所請求資源"應用范圍的"實例,即在適當應用隔離范圍內發現的實例(如果有的話)。將在應用隔離范圍中遇到的任何被枚舉資源添加到該視圖。如果在視圖中已經存在所枚舉的資源(因為它還存在于系統范圍中),則用在應用隔離范圍內遇到的資源實例替換其。類似地,枚舉所請求資源"用戶范圍的,,實例,即在適當用戶隔離范圍內發現的實例(如果有的話)。同樣,將在用戶隔離范圍中遇到的任何被枚舉資源添加到該視圖。如果在視圖中已經存在該本地資源(因為它存在于系統范圍或適當的應用隔離范圍中),則用在用戶隔離范圍內遇到的資源實例替換其。通過這種方式,本地資源的任何枚舉都將適當地反應所枚舉本地資源的虛擬化。從概念上講,同樣的方法也適用于枚舉包括多個子范圍的隔離范圍。枚舉個體子范圍,匯集視圖中來自較高子范圍的資源替代來自較低子范圍的匹配實例。在其他實施例中,可以從用戶隔離范圍層向下到系統層來進行枚舉,而不是相反的情況。在這些實施例中,枚舉用戶隔離范圍。然后枚舉應用隔離范圍,并將出現在用戶隔離范圍中未枚舉的應用隔離范圍中的任何資源實例添加到構建中的匯集視圖。可以對僅出現在系統范圍中的資源重復類似過程。在其他實施例中,可以同時枚舉所有隔離范圍并組合各枚舉。如果應用試圖打開本地資源的現存實例而無意修改該資源,被返回到該應用的特定實例是在虛擬范圍中找到的那個,或者相當地,是出現在所請求資源雙親的虛擬化枚舉中的實例。從隔離環境的角度來看,將該應用說成請求打開"虛擬資源",將用于滿足該請求的本地資源的特定實例說成是對應于所請求資源的"字面資源"。如果代表用戶執行的應用試圖打開資源并表明它正在這么做且有意修改該資源,一般為該應用實例賦予要修改資源的私用拷貝,因為應用隔離范圍和系統范圍中的資源是由代表其他用戶執行的應用所共有的。除非用戶范圍的實例已經存在,通常制作資源的用戶范圍的拷貝。由虛擬范圍提供的匯集視圖的定義表示向用戶隔離范圍拷貝應用范圍的或系統范圍的資源這一動作不會改變虛擬范圍為相關用戶和應用提供的匯集視圖,也不會改變為任何其他用戶提供的匯集視圖,也不會改變為任何其他應用實例提供的匯集視圖。代表用戶執行的應用實例隨后對所拷貝的資源所做的修改不會影響不共享相同用戶隔離范圍的任何其他應用實例的匯集視圖。換言之,這些修改不會改變用于其他用戶,或用于與同一應用隔離范圍不相關的應用實例的本地資源的匯集視圖。可以將應用安裝到特定隔離范圍之內(下文更詳細描述)。被安裝到隔離范圍內的應用總是與該范圍相關。或者,可以將應用啟動到特定隔離范圍中,或者到若干隔離范圍中。實際上,應用被啟動到一個或多個隔離范圍中且與一個或多個隔離范圍相關聯。相關聯的隔離范圍為該過程提供特定的本地資源視圖。也可以將應用啟動到系統范圍中,即它們可以不與隔離范圍相關聯。這允許在隔離環境中優選擇地執行諸如InternetExplorer的操作系統應用以及第三方應用。這種不論應用安裝在哪里都可以將應用啟動到隔離范圍中的能力減輕了應用兼容性和交際性問題,而無需在隔離范圍之中分開安裝應用。在不同隔離范圍中有選擇地啟動所安裝的應用的能力提供了如下能力,即,4吏需要幫助應用的應用(例如Word、Notepad等)以相同的規則集啟動這些幫助應用。65此外,在多個隔離的環境中啟動應用的能力允許在隔離的應用和公共應用之間更好地進行集成。現在參考圖8C,簡而言之,將過程與隔離范圍相關聯的方法包括啟動掛起狀態下的過程的步驟(步驟882)。檢索與期望的隔離范圍相關聯的規則(步驟884),在存儲元件中存儲過程標識符和所檢索的規則(步驟886)并繼續進行掛起的過程(步驟888)。截取或轉播該過程做出的訪問本地資源的后續調用(步驟890),并用與過程標識符相關聯的規則(如果有的話)虛擬化對所請求資源的訪問(步驟892)。仍然參考圖8C,更詳細地講,在掛起狀態下啟動過程(步驟882)。在一些實施例中,用自定義啟動程序來完成該任務。在這些實施例中的一些中,啟動程序被特定設計成將過程啟動到選定的隔離范圍中。在其他實施例中,啟動程序例如通過命令行選項接收期望的隔離范圍的規格說明來作為輸入。檢索與期望的隔離范圍相關聯的規則(步驟884)。在一些實施例中,從持久性存儲元件,例如硬盤驅動器或其他固態存儲元件中檢索規則。可以將規則存儲成關系型數據庫、平面文件數據庫、樹形結構化數據庫、二叉樹結構或其他不變數據結構。在其他實施例中,可以將規則存儲在特別為存儲它們而配置的數據結構中。在存儲元件中存儲過程標識符,例如過程ID(PID)和所檢索的規則(步驟886)。在一些實施例中,提供內核模式驅動程序,其接收涉及到新過程創建的操作系統消息。在這些實施例中,可以在驅動程序的語境中存儲PID和所檢索的規則。在其他實施例中,提供文件系統過濾器驅動程序或小型過濾器來攔截本地資源請求。在這些實施例中,可以在過濾器中存儲PID和所檢索的規則。在又一些其他實施例中,通過用戶模式轉播進行所有攔截而且不存儲任何PID。在過程初始化期間由用戶模式轉播設備加載規則,沒有任何其他部件需要知道應用于PID的規則,因為是在整個過程中進行規則關聯的。繼續進行桂起的過程(步驟888),攔截或轉播該過程做出的訪問本地資源的后續調用(步驟890),并用與過程標識符相關聯的規則(如果有的話)虛擬化對所請求資源的訪問(步驟892)。在一些實施例中,文件系統過濾器驅動程序或小型過濾器或文件系統驅動程序攔截訪問一組規則相關聯。如果是這樣的話,用與所存儲的過程標識符相關聯的規則來虛擬化訪問本地資源的請求。否則,不加修改通過該訪問本地資源的請求。在其他實施例中,將動態鏈接庫加載到新創建的過程中,該庫加栽隔離規則。在其他實施例中,將內核模式技術(轉播、過濾器驅動程序、小型過濾器)和用戶模式技術都用于攔截訪問本地資源的調用。對于文件系統過濾器驅動程序存儲規則的實施例而言,該庫可以從文件系統過濾器驅動程序加載規則。作為與隔離范圍相關的過程的"子女"的過程與它們"雙親"過程的隔離范圍相關。在一些實施例中,這是由創建子過程時內核模式驅動程序通知文件系統過濾器驅動程序而實現的。在這些實施例中,文件系統過濾器驅動程序判斷父過程的過程標識符是否與隔離范圍相關聯。如果是這樣的話,文件系統過濾器驅動程序存儲新建子過程的過程標識符與父過程的隔離范圍之間的關聯。在其他實施例中,可以直接從系統調用文件系統過濾器驅動程序,而無須使用內核模式驅動程序。在其他實施例中,在與隔離范圍相關聯的過程中,轉播或攔截創建新過程的操作系統功能。當從這種過程接收到創建新過程的請求時,存儲新子過程和雙親隔離范圍之間的關聯。在一些實施例中,可以將范圍或子范圍與單個線程而不是整個過程相關聯,這允許在每個線程基礎上執行隔離。在一些實施例中,每個線程的隔離可以用于服務和C0M+服務器。在一些實施例中,用隔離環境向應用流傳輸客戶端552提供額外的功能。在這些實施例之一中,在隔離環境之內執行應用程序。在這些實施例的另一個中,檢索到的多個應用文件駐留在隔離環境中。在這些實施例的又一個中,在隔離環境中對本地機IO上的注冊表做出更改。在一個實施例中,應用流傳輸客戶端552包括隔離環境556。在一些實施例中,應用流傳輸客戶端552包括攔截對文件的應用請求的文件系統過濾器驅動程序564。在這些實施例之一中,文件系統過濾器驅動程序564攔截打開現有文件的應用請求并判定該文件不在該隔離環境556中。在這些實施例的另一個中,文件系統過濾器驅動程序564響應于該文件不在隔離環境556中的判斷向流傳輸服務554重定向該請求。流傳輸服務554可以從多個應用文件提取文件并將文件存儲在67隔離環境556中。文件系統過濾器驅動程序564然后可以利用所存儲的文件拷貝向對該文件的請求做出響應。在一些實施例中,該文件系統過濾器驅動程序564可以響應于流傳輸服務554未檢索到該文件或多個應用文件的指示以及該文件不在隔離環境556中的判斷將對文件的請求重定向到文件服務器540。在一些實施例中,文件系統過濾器驅動程序564使用嚴格的隔離規則來防止隔離環境556中出現沖突或不一致的數據。在這些實施例之一中,在用戶隔離環境中攔截對資源的請求的文件系統過濾器驅動程序564可以將請求重定向到應用隔離環境。在這些實施例的另一個中,文件系統過濾器驅動程序564不將請求重定向到系統范圍。在一個實施例中,流傳輸服務554使用IOCTL命令與過濾器驅動程序通信。在另一個實施例中,利用MicrosoftSMB流傳輸協議接收發往文件服務器540的通信。在一些實施例中,打包機構530在清單文件中存儲被發布成可用應用的文件類型列表并使應用發布軟件可以使用該信息。在這些實施例之一中,打包機構530通過監測在分級機上的隔離環境中安裝應用程序來接收該信息。在這些實施例的另一個中,打包機構530的用戶向打包機構530提供該信息。在其他實施例中,訪問套件控制臺520中的應用發布軟件查詢該清單文件以向訪問套件控制臺的用戶提供可以與所請求的被發布應用相關聯的可能的文件類型。用戶選擇文件類型以與特定的被發布應用相關聯。在應用枚舉的時候向本地機10提供該文件類型。本地機10可以包括客戶端代理560。客戶端代理560提供如下功能將文件類型與應用程序相關聯并響應于該關聯選擇執行應用程序的方法。在一個實施例中,客戶端代理560為程序鄰域應用。在選擇應用程序以執行時,本地機10對與應用程序文件類型相關聯的執行方法做出判斷。在一個實施例中,本地機10判定該文件類型與需要檢索應用文件的應用流傳輸會話并需要在隔離環境之內執行的執行方法相關聯。在本實施例中,本地機10可以將該請求重定向到應用流傳輸客戶端552,而不是啟動應用程序的本地版本。在另一個實施例中,客戶端代理560做出判斷。在又一個實施例中,客戶端代理560將該請求重定向到應用流傳輸客戶端552。在一個實施例中,應用流傳輸客戶端552從遠程機30請求與應用程序相關聯的訪問信息。在一些實施例中,應用流傳輸客戶端552接收含有訪問信息的可執行程序。在這些實施例之一中,應用流傳輸客戶端552接收能夠在本地機10上顯示因在遠程機上執行應用程序而生成的應用輸出數據的可執行程序。在這些實施例的另一個中,應用流傳輸客戶端552接收能夠通過應用流傳輸會話接收應用程序并在本地機IO上的隔離環境中執行應用程序的可執行程序。在本實施例中,應用流傳輸客戶端552可以執行所接收的可執行程序。在這些實施例的又一個中,遠程機30響應于如上所述執行應用解析來選擇可執行程序以提供到本地機10。現在參考圖9,流程圖示出了在執行應用的方法中采取的步驟的一個實施例。如以上在圖7中所述,對步驟214而言,本地機10接收并執行多個應用文件。簡而言之,本地機IO接收包括訪問信息的文件,該訪問信息用于訪問多個應用文件并執行能夠接收應用流的第一客戶端(步驟902)。本地機10響應于該文件檢索多個應用文件的標識(步驟904)。本地機10響應于該文件檢索執行多個應用文件所需的至少一個特征(步驟906)。本地機10判斷本地機10是否包括至少一個特征(步驟908)。本地機10響應于本地機IO缺少至少一個特征的判斷執行第二客戶端,第二客戶端請求在遠程機上執行多個應用文件(步驟910)。參考圖9,并且更詳細地講,本地機IO接收包括訪問信息的文件,該訪問信息用于訪問多個應用文件并執行能夠接收應用流的笫一客戶端(步驟902)。在一個實施例中,本地機10接收訪問信息,該訪問信息包括包含應用程序的多個應用文件位置的標識。在另一個實施例中,本地機10響應于請求執行應用程序而接收該文件。在又一個實施例中,訪問信息包括表明多個應用文件駐留在諸如應用服務器或文件服務器的遠程機30'上的指示。在又一個實施例中,訪問信息表明本地機10可以通過應用流傳輸會話從遠程才凡30檢索多個應用文件。本地機10響應于該文件檢索多個應用文件的標識(步驟904)。在一個實施例中,本地機10響應于包括訪問信息的文件識別多個應用文件所駐留的遠程機。在另一個實施例中,本地機10從遠程機30檢索標識多個應用文件的文件。在一些實施例中,多個應用文件包括T/US2006/037602應用程序,在其他實施例中,多個應用文件包括多個應用程序。在其他實施例中,多個應用文件包括單個應用程序的多個版本。向前參考圖10,流程圖示出了駐留在諸如文件服務器540的遠程機3(K上的多個應用文件的一個實施例。在圖10中,被稱為程序包的多個應用文件包括包括一個或多個應用程序的三個不同版本的應用文件。在一個實施例中,講包括一個或多個應用程序版本并被存儲在程序包的應用文件的每個子集稱為目標。例如,目標1包括字處理應用程序和數據表程序版本,該版本與MicrosoftWindows2000搮作系統的英文版兼容。目標2包括字處理應用程序和數據表程序版本,該版本與MicrosoftXP操作系統的英文版兼容。目標3,字處理應用程序和數據表程序版本,該版本與具有服務套件3的MicrosoftWindows2000操作系統的日文版兼容。現在參考圖9,在一些實施例中,從持有多個應用文件的遠程機30檢索的文件包括對程序包的描述以及多個應用文件中包括的目標。在其他實施例中,從遠程機30檢索的文件識別多個應用文件,該多個應用文件包括本地機io請求執行的應用程序。本地機10響應于該文件檢索執行多個應用文件所需的至少一個特征(步驟906)。在一些實施例中,本地機10可以不執行應用程序,除非本地機包括特定的特征。在這些實施例之一中,不同的應用程序需要本地機10包括與其他應用程序所需的特征不同的特征。在這些實施例的另一個中,本地機10接收執行包括本地機10所請求的應用程序的多個應用文件所需的至少一個特征的標識。本地機判斷本地機10是否包括至少一個特征(步驟908)。在一個實施例中,本地機10評估本地機10上的操作系統以判斷本地機10是否包括至少一個特征。在另一個實施例中,本地機10識別本地機10上的操作系統所用的語言,以判斷本地機10是否包括至少一個特征。在又一個實施例中,本地機10識別本地機10上的操作系統的版本水平以判斷本地機10上是否包括至少一個特征。在又一個實施例中,本地機10識別駐留在本地機10上的應用程序的應用版本以判斷本地機10上是否包括至少一個特征。在一些實施例中,本地機10判斷本地機7010是否包括設備驅動程序以判斷本地機10是否包括至少一個特征。在其他實施例中,本地機10判斷本地機10是否包括操作系統以判斷本地機10是否包括至少一個特征。在其他實施例中,本地機10判斷本地機10是否包括執行多個應用文件的許可以判斷本地機10是否包括至少一個特征。本地機10響應于本地機10缺少至少一個特征的判斷執行第二客戶端,第二客戶端請求在遠程機30上執行多個應用文件(步驟910)。在一個實施例中,當本地機10判定本地機10缺少至少一個特征時,本地機10不執行能夠接收應用流的第一客戶端。在另一個實施例中,當本地機10缺少至少一個特征時,策略禁止本地機10通過應用流接收多個應用文件。在一些實施例中,本地機10判定本地機10不包括至少一個特征。在這些實施例之一中,本地機io執行第一客戶端,第一客戶端從遠程機30接收包括多個應用文件的應用流以在本地機上執行。在一些實施例中,本地機10在判定本地機10沒有至少一個特征時執行第二客戶端,第二客戶端請求在遠程機上執行多個應用文件。在這些實施例之一中,第二客戶端向持有多個應用文件的遠程機30發送請求。在這些實施例的另一個中,遠程機30執行包括應用程序的多個應用文件并生成應用輸出數據。在這些實施例的又一個中,第二客戶端接收在遠程機上執行多個應用文件產生的應用輸出數據。在一些實施例中,笫二客戶端通過獨立計算結構(IndependentComputingArchitecture)表示層協議或遠程桌面Windows(RemoteDesktopWindows)表示層協議或X-Windows表示層協議接收應用輸出數據。在這些實施例的又一個中,第二客戶端在本地機10上顯示應用輸出。在一些實施例中,第二客戶端向未持有多個應用文件的遠程機30發送請求。在這些實施例之一中,遠程機30可以從持有多個應用文件的第二遠程機30請求多個應用文件。在這些實施例的另一個中,遠程機30可以通過應用流傳輸會話從第二遠程機30接收多個應用文件。在這些實施例的又一個中,遠程機30在隔離環境中存儲所接收的多個應用文件并在隔離環境中執行應用程序。在這些實施例的又一個中,遠程機向本地機上的第二客戶端發送所產生的應用輸出數據。返回到圖5,在一個實施例中,能夠接收應用流的第一客戶端為應用流傳輸客戶端552。應用流傳輸客戶端552接收文件,響應于該文件檢索多個應用文件的標識以及執行多個應用文件所需的至少一個特征,并判斷本地機10是否包括至少一個特征。在另一個實施例中,第二客戶端為客戶端代理560。在一些實施例中,客戶端代理560響應于應用流傳輸客戶端552做出的本地機10沒有至少一個特征的判斷,從應用流傳輸客戶端552接收文件。在一些實施例中,在本地機10上執行的應用566利用Win32FindFirstFile()和FindNextFile()API調用枚舉與應用566相關聯的文件。在這些實施例之一中,多個應用文件包括應用566。在這些實施例的另一個中,并非多個應用文件中的所有文件都駐留在本地機10上.在這些實施例的又一個中,流傳輸服務554檢索檔案文件中的多個應用文件,但僅提取多個應用文件的子集。在這些實施例的又一個中,即使在所請求的文件不在本地機10上時,流傳輸服務554和文件系統過濾器驅動程序564也提供用于滿足枚舉請求的功能。在一個實施例中,通過如同多個應用文件中的所有文件都駐留在本地機10上一樣來攔截枚舉請求并提供數據,由此提供該功能。在另一個實施例中,通過由文件系統過濾器驅動程序564攔截被作為IOCTL命令,例如IRP-MJ一DIRECTORY-CONTROLIOCTL發送的枚舉請求來提供該功能。當文件系統過濾器驅動程序564攔截調用時,文件系統過濾器驅動程序564將該請求重定向到流傳輸服務554。在一個實施例中,文件系統過濾器驅動程序564在將請求重定向到流傳輸服務554之前判定所請求的枚舉在本地機IO上的隔離環境中。在另一個實施例中,流傳輸服務554利用多個應用文件中的文件實現該請求,該文件包括與多個應用文件相關聯的目錄結構的枚舉。在又一個實施例中,流傳輸服務554向文件系統過濾器驅動程序564提供對該請求的響應以滿足枚舉請求。現在參考圖11,流程圖示出了在本地響應對與遠程存儲的文件相關聯的文件元數據的請求的方法中所采取的步驟的一個實施例。簡而言之,從遠程機接收(i)表示遠程機存儲的應用程序的目錄結構以及(ii)與包括所存儲應用程序的每個文件相關聯的元數據(步驟1102)。存儲目錄結構和元數據(步驟1104)。接收至少一個訪問與目錄結構中的特定文件相關聯的元數據的請求(步驟1106)。利用所存儲的元數據對至少一個請求做出響應(步驟1108).更詳細地參考圖11,從遠程機接收表示遠程機存儲的應用程序的目錄結構以及與包括所存儲應用程序的每個文件相關聯的元數據(步驟1102)。在一個實施例中,流傳輸服務554接收目錄結構和元數據。在另一個實施例中,在流傳輸服務554檢索包括所存儲的應用程序的多個應用文件時,流傳輸服務554接收目錄結構和元數據。在又一個實施例中,在多個應用文件中的文件中存儲目錄結構和元數據。在一個實施例中,與每個文件相關聯的元數據包括至少一個文件的別名。在另一個實施例中,與每個文件相關聯的元數據包括至少一個文件的短名、具有八個字符長度的名稱、點以及三字符的擴展名。在又一實施例中,與每個文件相關聯的元數據包括至少一個文件的別名和至少一個文件的短名之間的映射。在一些實施例中,多個應用文件中的文件具有備選文件名。在這些實施例之一中,當由指向本地機的流傳輸服務554檢索文件時,響應于該文件的別名和至少一個文件的短名之間的映射,將該文件與短名相關聯。存儲目錄結構和元數據(步驟1104)。在一個實施例中,在隔離環境556中存儲目錄結構和元數據。在另一個實施例中,在高速緩沖存儲器元件中存儲目錄結構和元數據。在又一個實施例中,利用表示遠程機存儲的應用程序的目錄結構來生成表示在本地機上執行的應用程序的目錄結構枚舉。接收至少一個訪問與目錄結構中的特定文件相關聯的元數據的請求(步驟1106)。在一個實施例中,該請求為枚舉文件的請求。在另一個實施例中,該請求為確定本地是否有包括所存儲的應用程序的文件拷貝的請求。在一個實施例中,由在本地機上的隔離環境中執行的應用566提出該請求。在另一個實施例中,由應用流傳輸客戶端552提出該請求。在又一個實施例中,代表應用566提出該請求。在一個實施例中,由文件系統過濾器驅動程序564攔截請求。在另一個實施例中,由文件系統過濾器驅動程序564將請求轉發到應用流傳輸客戶端552。在又一個實施例中,由文件系統過濾器驅動程序564將請求轉發到流傳輸服務554。在一些實施例中,由代替操作系統功能或枚舉目錄的功能的功能轉播請求。在另一個實施例中,用轉播動態鏈接庫來攔截請求。可以在用戶模式或內核模式下執行轉播功能。在以用戶模式執行轉播功能的實施例中,可以在生成過程時將轉播功能加載到過程的地址空間中。對于在內核模式下執行轉播功能的實施例,轉播功能可以與調度對文件操作的請求時使用的操作系統資源相關聯。對于為每種文件操作提供獨立的操作系統功能的實施例,可以獨立轉播每種功能。或者,可以提供單個轉播功能,其攔截針對若干類型的文件操作的生成或打開調用。利用所存儲的元數據對至少一個請求做出響應(步驟1108)。在一個實施例中,文件系統過濾器驅動程序564對請求做出響應。在另一個實施例中,應用流傳輸客戶端552對請求做出響應。在又一個實施例中,流傳輸服務554對請求做出響應。在一個實施例中,訪問所存儲的元數據以對至少一個請求做出響應。在另一個實施例中,利用文件遠程拷貝在本地的誤指示對請求做出響應.在一個實施例中,響應于所接收的元數據,滿足Windows操作系統FindFirst操作。在另一個實施例中,響應于所接收的元數據,滿足Windows操作系統FindNext操作。在又一個實施例中,響應于所接收的元數據滿足在目錄結構中識別根節點的操作。在一些實施例中,4吏用諸如WIN32-FIND-DATAAPI的應用層API對操作做出響應。在其他實施例中,使用諸如FILE-B0TH—DIR—INFORMATION的內核層API對操作做出響應。在一個實施例中,元數據滿足用于識別與目錄結構中的節點相關聯的一次訪問的操作。在另一個實施例中,元數據滿足用于識別與目錄結構中的節點相關聯的一次修改的操作。在又一個實施例中,元數據滿足用于識別目錄結構中的修改節點的操作。現在參考圖12,方框圖示出了用于在本地對與遠程存儲的文件相關聯的文件元數據的請求做出響應的系統的一個實施例,該系統包括流傳輸服務554、文件系統過濾器驅動程序564、目錄結構570、多個應用文件572、元數據574和高速緩沖存儲器元件576。簡而言之,該目錄結構570標識與至少一個應用程序相關聯的多個文件。元數據574與多個文件中的至少一個相關,該多個文件中的至少一個駐留在遠程機上。在一個實施例中,目錄結構570包括元數據574。高速緩沖存儲器元件576存儲目錄結構570。文件系統過濾器驅動程序564攔截訪問與至少一個遠程存儲的文件相關聯的元數據的請求,訪問高速緩沖存儲器元件并利用所存儲的目錄結構對至少一個請求做出響應.在一些實施例中,流傳輸服務554接收目錄結構570和元數據574。在這些實施例之一中,目錄結構570代表多個與應用程序相關聯的應用文件572,該多個應用文件572駐留在諸如遠程機30的遠程機上。在這些實施例的另一個中,元數據574包括用于對Windows操作系統FindFirst請求做出響應的信息。在這些實施例的又一個中,元數據574包括用于對Windows操作系統FindNext請求做出響應的信息。在這些實施例的又一個中,元數據574包括用于對識別目錄結構中的根節點的請求做出響應的信息。在這些實施例的另一個中,元數據574包括用于對識別目錄結構中的節點的請求做出響應的信息。在一些實施例中,使用諸如WIN32-FIND_DATA的應用層API對操作做出響應。在其他實施例中,使用諸如FILE_BOTH_DIR-INFORMATION的內核層API對操作做出響應。在一些實施例中,可以將關于文件的少量元數據574直接存儲在文字文件名中,例如將元數據指示符負在虛擬名后面,其中元數據指示符是與特定元數據狀態唯一相關的字符串。元數據指示符可以表示或編碼一個或幾個元數據比特。希望通過虛擬文件名訪問文件的請求檢查是否有因為存在元數據指示符而導致的文字文件名的可能變化,轉播或攔截希望檢索文件自身名稱的請求以便利用文字名稱做出響應。在其他實施例中,可以用虛擬文件名和元數據指示符形成文件的一個或多個備選名稱,且可以利用文件系統提供的硬鏈接或軟鏈接設施來生成。如果給出利用鏈接名稱訪問文件的請求,則通過表示未找到該文件來通過隔離環境使這些鏈接的存在相對于應用隱藏起來。特定鏈接的存在或不存在可以為每個元數據指示符表示元數據的一比特,或者可能有能采用多個狀態表示元數據若干比特的與元數據指示符的鏈接。在文件系統支持備選文件流的其他實施例中,可以制作備選文件流來體現元數據,流的大小表示元數據的若干比特。在其他實施例中,文件系統可以直接提供為文件系統中每個文件存儲一些第三方元數據的能力。在其他實施例中,可以用獨立的子范圍來記錄被刪除的文件,用該子范圍中存在文件(未標識為占位符)表示該文件被75刪除。在一個實施例中,組合用戶隔離環境、應用隔離環境和系統范圍中的數據以形成表示應用的目錄結構的當地枚舉。在另一個實施例中,流傳輸服務554訪問元數據574和目錄結構570以填充應用隔離環境。在又一個實施例中,文件系統過濾器驅動程序564生成目錄結構的本地枚舉。在又一個實施例中,目錄結構的本地枚舉標識出多個應用文件572中的至少一個文件,該至少一個文件駐留在遠程機上而不是本地機上。在一些實施例中,在高速緩沖存儲器元件576上存儲目錄結構的本地枚舉。在其他實施例中,流傳輸服務554生成應用隔離環境和目錄結構的本地枚舉。在一個實施例中,文件系統過濾器驅動程序564攔截被發送到系統范圍希望訪問目錄結構的本地枚舉的請求。在另一個實施例中,文件系統過濾器驅動程序564在攔截該請求之后生成本地枚舉。在又一個實施例中,文件系統過濾器驅動程序564將對本地枚舉的請求重定向到用戶隔離環境。在又一個實施例中,文件系統過濾器驅動程序564將對本地枚舉的請求重定向到應用隔離環境。在一些實施例中,文件系統過濾器驅動程序564攔截對目錄本地枚舉中的文件標識的訪問請求,該文件駐留在遠程機上。在這些實施例之一中,如下文參考圖3要更詳細描述的,文件系統過濾器驅動程序564請求由流傳輸服務554檢索該文件。在隔離環境中運行的應用提出對文件的請求時,過濾器驅動程序攔截這些請求。如果該請求是要打開文件,過濾器驅動程序將首先將請求重定向到隔離環境,以判斷隔離環境是否可以滿足該請求。如果調用成功,過濾器驅動程序將利用位于隔離環境中的文件實例對請求做出響應。然而,如果所請求的文件不在隔離環境中,過濾器驅動程序則向流傳輸服務554發送請求以從多個應用文件檢索該文件,一直中斷到完成請求,然后重試初始的文件打開。在一些實施例中,將流傳輸服務554在接收到來自過濾器驅動程序的請求時從多個應用文件檢索文件的功能稱為"按需高速緩存"。現在參考圖13,流程圖示出了在訪問與本地執行的應用程序相關聯的目錄結構中的遠程文件的方法中采取的步驟的一個實施例。簡而76言之,攔截應用訪問文件的請求(步驟1302)。將該請求重定向到第一隔離環境(步驟1304)。做出第一隔離環境中不存在所請求文件的判斷(步驟1306)。響應于在與駐留在遠程機上的多個應用文件相關聯的目錄結構枚舉中識別出該文件的判斷,將該請求重定向到第二隔離環境(步驟1308).響應于第二隔離環境不含該文件且在枚舉中識別出該文件的判斷,從遠程機檢索所請求的文件(步驟1310)。參考圖13,更詳細地講,攔截應用訪問文件的請求(步驟1302)。在一個實施例中,由文件系統過濾器驅動程序攔截請求。在另一個實施例中,文件系統過濾器驅動程序攔截訪問文件的所有請求。在又一個實施例中,應用流傳輸客戶端552攔截該請求。在一些實施例中,攔截應用訪問可執行文件的請求。在其他實施例中,攔截應用訪問文件的請求、在本地機IO上執行的應用的一部分。將該請求重定向到第一隔離環境(步驟1304)。在一個實施例中,在笫一隔離環境之內執行應用。在一個實施例中,該應用是諸如文字處理程序或數據表程序的應用程序。在另一個實施例中,該應用是應用流傳輸客戶端。在又一個實施例中,該應用是應用流傳輸客戶端552中試圖代表本地機10的用戶啟動應用程序的部件。在另一個實施例中,文件系統過濾器驅動程序將該請求重定向到第一隔離環境。做出第一隔離環境中不存在所請求文件的判斷(步驟1306)。在一個實施例中,文件系統過濾器驅動程序接收第一隔離環境中不存在所請求的文件的指示。響應于在與駐留在遠程機上的多個應用文件相關聯的目錄結構枚舉中識別出該文件的判斷,將該請求重定向到第二隔離環境(步驟1308)。在一個實施例中,利用關于執行第一應用的訪問信息接收目錄結構枚舉。在另一個實施例中,該枚舉標識包括第二應用的多個應用文件。在本實施例中,第一應用是第二應用的本地拷貝。響應于第二隔離環境不含該文件且在枚舉中識別出該文件的判斷,從遠程機檢索所請求的文件(步驟1310)。在一個實施例中,從第二遠程機檢索所請求的文件。在另一個實施例中,從文件服務器檢索所請求的文件。在一些實施例中,目錄結構枚舉識別駐留在本地機上的多個應用文件。在其他實施例中,目錄結構枚舉指出多個應用文件在本地機上。在這些實施例之一中,當應用請求訪問目錄結構枚舉已指出駐留在本地機上的多個應用文件中的文件時,在攔截訪問請求時從文件服務器獲取該文件。在這些實施例的另一個中,文件服務器將所請求的文件流傳輸到本地機。在這些實施例的又一個中,在接收到所請求的文件時,在第二隔離環境中存儲所請求的文件。在其他實施例中,當應用請求訪問目錄結構枚舉已指出駐留在本地機上的多個應用文件中的文件時,從本地高速緩沖存儲器向應用提供該文件的拷貝。在一些實施例中,所請求的文件是加密的。在其他實施例中,所請求的文件被存儲成加密的形式。在其他實施例中,如果請求該文件的應用沒有訪問所請求的文件的授權,可以防止該應用對所請求的文件解密。在一個實施例中,做出目錄結構枚舉未識別出該文件的判斷。在本實施例中,可以將訪問文件的請求重定向到笫一隔離環境之外和第二隔離環境之外的環境。在一些實施例中,攔截訪問文件的第二請求。在這些實施例之一中,由第二應用提出訪問文件的請求。在這些實施例的另一個中,第二應用在第三隔離環境中執行。在這些實施例的又一個中,響應于在該枚舉中枚舉了該文件且第二隔離環境不含該文件的判斷,將請求重定向到第二隔離環境。可以做出在從文件服務器接收到該文件時本地機將文件存儲在第二隔離環境中的決定。在又一個實施例中,將該文件存儲在第三隔離環境中。現在參考圖14,方框圖示出了用于訪問與應用相關的目錄結構中的文件的系統的一個實施例。簡而言之,本地機10包括應用流傳輸客戶端552、流傳輸服務554、隔離環境556、文件系統過濾器驅動程序564和第一應用566。本地機10可以與文件服務器540、遠程機30、web接口558和第二應用566'交互。本地才幾IO對應用流傳輸客戶端552初始化以執行第一應用566。在一個實施例中,應用流傳輸客戶端552對流傳輸服務554初始化以檢索和執行第一應用566。在一些實施例中,多個應用文件包括第一應用566。在這些實施例之一中,流傳輸服務554檢索多個應用文件并將它們存儲在隔離環境566中。在這些實施例的另一個中,流傳輸服務554識別多個應用文件所在的遠程機位置,但不檢索多個應用文件。在這些實施例的又一個中,流傳輸服務554檢索多個應用文件的文件子集。在這些實施例的又一個中,流傳輸服務554檢索含有多個應用文件的檔案文件。在一個實施例中,第一應用566包括駐留在遠程機30上的第二應用566'的本地拷貝。在另一個實施例中,多個應用文件駐留在遠程機30上且包括駐留在遠程機30上的第二應用566'。在又一實施例中,為了執行第二應用566、本地機IO檢索多個應用文件,在本地機上生成第一應用566,并執行第一應用566。在一些實施例中,應用566和566'為用戶應用,例如文字處理應用或電子表格應用或演示文稿應用。在一些實施例中,多個應用文件包括標識與遠程機30上的多個應用文件相關聯的目錄結構的文件。在這些實施例之一中,該文件包括與多個應用文件中的每個文件有關的元數據。在這些實施例的另一個中,流傳輸服務554從該文件檢索元數據以產生與多個應用文件相關聯的目錄結構枚舉,如上文參考圖12所述。在這些實施例的又一個中,流傳輸服務554存儲與包括第二應用566'的多個應用文件相關聯的目錄結構枚舉。在一些實施例中,流傳輸服務554在第二隔離環境中存儲該枚舉。在一個實施例中,流傳輸服務554檢索與第一應用566相關聯的初始可執行文件。在另一個實施例中,流傳輸服務554在檢索初始可執行文件時在本地機10上執行第一應用566。在又一個實施例中,第一應用566請求訪問多個應用文件中的其他文件,因為繼續執行第一應用566需要這些文件。在一些實施例中,在隔離環境556中執行第一應用566。文件系統過濾器驅動程序564攔截在隔離環境556中執行的第一應用566訪問多個應用文件中的文件的請求。文件系統過濾器驅動程序564將該請求重定向到隔離環境556。如果所請求的文件在隔離環境556中,則向第一應用566提供對所請求的文件的訪問。如果所請求的文件不在隔離環境556中,文件系統過濾器驅動程序564則將該請求重定向到笫二隔離環境。在一個實施例中,第二隔離環境包括由流傳輸服務554產生并與包括第二應用566'的多個應用文件相關聯的目錄結構枚舉。在另一個實施例中,做出在目錄結構枚舉中識別所請求的文件的決定。在一些實施例中,流傳輸服務554向隔離環境556提供信號量。在這些實施例之一中,文件系統過濾器驅動程序564利用信號量向流傳輸服務554表示需要訪問多個應用文件中的文件。在其他實施例中,文件系統過濾器驅動程序564使用線程向流傳輸服務554表示需要訪問該文件。在從文件系統過濾器驅動程序564接收到通知時,流傳輸服務554從多個應用文件檢索所請求的文件。在這些實施例的又一個中,流傳輸服務554在第二應用隔離環境中存儲所請求的文件。在一個實施例中,利用從多個應用文件中檢索且存儲在第二隔離環境中的文件實例滿足訪問文件的請求。在另一個實施例中,還在第一隔離環境中存儲所請求的文件。在一些實施例中,做出笫二隔離環境不含該文件且在枚舉中識別該文件的決定。在這些實施例之一中,在與包括第二應用566'的多個應用文件相關聯的目錄結構枚舉中識別該文件,且該文件是多個應用文件中的文件。在這些實施例的另一個中,流傳輸服務554不從遠程機檢索該文件。在這些實施例的又一個中,流傳輸服務554不檢索包括所請求的文件的多個應用文件。在這些實施例的又一個中,流傳輸服務554在檔案文件中檢索多個應用文件,但不從該檔案文件檢索所請求的文件。在一個實施例中,流傳輸服務554包括與文件系統過濾器驅動程序通信的收發器。在另一個實施例中,收發器從文件系統過濾器驅動程序接收重定向的請求。在又一實施例中,收發器將對該文件的請求轉發到持有所請求文件的遠程機。在一個實施例中,遠程機為文件服務器540。在另一個實施例中,將該請求轉發到遠程機30,遠程機30將該請求路由到文件服務器540。在一些實施例中,文件服務器540將所請求的文件流傳輸到本地機10上的收發器。在其他實施例中,遠程機30將所請求的文件流傳輸到本地機10上的收發器。在其他實施例中,在從文件服務器540接收到所請求的文件時,收發器將所接收的文件存儲在第二隔離環境中。在一個實施例中,文件系統過濾器驅動程序564在第三隔離環境中攔截由在本地機10上執行的第三應用566"提出的訪問文件的第二請求。在另一個實施例中,文件系統過濾器驅動程序564將訪問文件的請求重定向到第二隔離環境。在又一個實施例中,文件系統過濾器驅動程序564決定在攔截第三應用"的訪問請求之前流傳輸服務554將所接收的文件存儲在第二隔離環境中。在一些實施例中,在初始化時,流傳輸服務554可以在執行應用程序之前填充隔離環境中的高速緩沖存儲器。在這些實施例之一中,流傳輸服務554向隔離環境中安裝注冊表文件。在這些實施例的另一個中,流傳輸服務554存儲文件的長名稱和短文件名之間的映射。在一個實施例中,為了節省本地機上的空間,可以限制高速緩沖存儲器的大小。在一些實施例中,當高速緩沖存儲器接近其大小極限時,將自動清除高速緩沖存儲器中最老的文件以為新文件騰出空間。在這些實施例之一中,通過操作系統保持的表示"上次訪問"時間戳的時間的時間戳確定文件的年齡。除了文件年齡之外,還可以考慮文件類型-可以將二進制可執行文件(.EXE,.LL等)保持比類似年齡的其他類型文件更長的時間。在初始化時,流傳輸服務554可以枚舉當前在高速緩沖存儲器中的文件并判斷高速緩沖存儲器的總大小。在由隔離環境556或流傳輸服務554向高速緩沖存儲器添加文件之后,流傳輸服務554調用功能,以向高速緩沖存儲器系統通知新文件、其位置和其大小。將每個新緩存文件的大小添加到高速緩沖存儲器當前正運行的總大小。然后將這一新的總大小與高速緩沖存儲器大小極限進行比較,如果已經超過該極限,代碼發出線程以增加高速緩沖存儲器的年齡。在任何給定時間只能有該線程的一個實例在運行。該線程生成高速緩沖存儲器中當前所有文件的列表,按照上次訪問時間戳對該列表排序,然后開始沿該列表向下刪除文件,直到我們具有足夠大的磁盤空間來滿足該線程的退出標準為止。退出標準基于高速緩沖存儲器大小下降到極限以下水平,該水平是作為極限百分比確定的(缺省值為10%)。刪除比所需更多的內容,以防止超過極限,防止高速緩沖存儲器在每次增加新文件時都不穩定。在一些實施例中,流傳輸服務554提供了以壓縮文件格式將包括應用程序的多個應用文件中的每個文件拷貝到本地機10的能力。可以將這種能力稱為"預高速緩存"。在這些實施例之一中,在隨后執行應用程序時,所有的打包請求都指向本地拷貝而不是通過網絡傳播。這些實施例可以使本地機10的用戶能夠在用戶無法訪問網絡的時候執行應用程序。遠程機30包括監測本地機IO使用應用的情況的功能。遠程機30可以監測本地機IO使用的每個應用的狀態,例如在執行或終止應用時進行監測。在一個實施例中,遠程機30要求本地機10發送有關本地機10執行的應用狀態的消息。在另一個實施例中,當本地機10連接到遠程機30所在的網絡時,本地機10發送消息,表示本地機10已連接到該網絡。在一個實施例中,當本地機10與遠程機30交互并執行一個或多個應用時,說本地機10具有會話。在另一個實施例中,遠程機30要求本地機IO在會話期間維持從遠程機接收的授權執行應用的許可。在又一個實施例中,會話具有由遠程機分配的唯一的會話標識符。在一個實施例中,本地機10向與其交互的遠程機30發送消息,以接收和執行應用程序。在另一個實施例中,本地機10從遠程機30接收諸如會話管理服務器562的第二遠程機的標識符,第二遠程機接收并存儲所發送的與本地機10上的會話相關的所有消息。在一些實施例中,會話管理服務器562是提供許可管理和會話監測服務的遠程機30。在這些實施例之一中,會話管理服務器562包括提供這些服務的服務器管理子系統508。在一個實施例中,本地機10直接向會話管理服務器562發送消息。在另一個實施例中,本地機10向遠程機30發送消息,遠程機30將該消息轉發到具有本地機10的標識的會話管理服務器562。本地機10可以向遠程機30發送心跳消息。在一個實施例中,心跳消息包括對許可的請求。在本實施例中,本地機10可以在接收到與本地機IO請求授權執行的應用程序相關聯的訪問信息之后,發送心跳消息。本地機10可以在執行應用之前發送心跳消息。在一個實施例中,本地機IO在心跳消息中包括利用訪問信息接收的啟動權證。在本實施例中,遠程機30可以在成功驗證啟動權證時為本地機5S2授予許可。在另一個實施例中,心跳消息包括表明本地機已經開始執行應用的指示。在又一實施例中,心跳消息包括表明本地機已經終止執行應用的指示。在又一個實施例中,心跳消息包括表明無法執行應用的指示。在一個實施例中,心跳消息包括對第二會話管理服務器,例如會話管理服務器562的標識的請求。在另一個實施例中,心跳消息包括表明本地機10已經連接到遠程機30所在網絡的指示。在一些實施例中,心跳消息包括復位應用流傳輸會話的請求。在這些實施例之一中,當發生錯誤時本地機IO發送該心跳消息,并終止遠程機30所在網絡和本地機10之間的連接。在這些實施例的另一個中,本地機IO與心跳消息一起發送與會話相關的信息.在這些實施例的又一個中,如果會話未到期,遠程機30可以向本地機10發送與會話相關的數據。在這些實施例的另一個中,如果遠程機30從其所在網絡斷開連接,本地機10可能無法接收到對發送到遠程機30的心跳消息的回復。在一個實施例中,本地機10可以通過向遠程機30發送請求會話復位的消息來重新建立會話。在另一個實施例中,本地機10可以通過向笫二遠程機30發送請求會話復位的消息來重新建立會話。在一些實施例中,當遠程機30重新連接到網絡時,它將會針對在遠程機30斷開連接時接收的每個會話復位請求建立新的會話。在這些實施例之一中,新會話將與重新連接且未許可狀態相關聯。在這些實施例的另一個中,將不會為新會話獲取任何新許可。在這些實施例的又一個中,在本地機IO執行應用時,將獲取新的許可,并且與本地機IO相關的所有會話將與活動且許可狀態相關聯。在一些實施例中,本地機10上的應用流傳輸客戶端552產生心跳消息。在這些實施例之一中,應用流傳輸客戶端552將心跳消息轉發到web接口558,以發送到本地機10,以發送到遠程機30。在其他實施例中,遠程機30上的管理服務504通過web接口558從本地機10接收心跳消息。在其他實施例中,包括收集點240(上文參考圖1D所述)的遠程機30接收并存儲心跳消息,在一些實施例中,應用流傳輸客戶端552從遠程機30請求許可。在這些實施例之一中,該許可授權在本地機552上執行應用程序。在這些實施例的另一個中,遠程機30可以訪問第二遠程機以提供許可。在這些實施例的又一個中,遠程才凡30可以向本地才凡提供該許可。在這些實施例的又一個中,遠程機30可以向第二遠程機提供授權可以接受的許可。在一些實施例中,在終止執4亍應用程序的時候收回該許可。83在一些實施例中,農場38中的遠程機30包括許可管理子系統,該許可管理子系統用于為需要操作許可的那些子系統配置和維持許可并控制通往這種子系統的連接數量。在其他實施例中,遠程機30將許可管理子系統的功能并入諸如應用管理子系統和會話管理子系統的其他子系統中。在一個實施例中,每個遠程機30包括許可管理子系統或與許可管理子系統相關的功能。許可管理子系統管理兩種許可(1)特征許可和(2)連接許可。簡而言之,許可管理子系統使用特征許可來控制對許可軟件產品的"特征,,的訪問,例如負栽管理,使用連接許可來控制這些許可軟件產品允許的用戶連接數量。特征可以是軟件產品的一些方面或特定功能,或者特征可以是沒有特征許可就無法工作的整個產品。圖15示出了農場38中的遠程機30的一個實施例,其中遠程機30包括許可管理子系統1510、組子系統1520、持久存儲器系統服務模塊1570、動態存儲器系統服務模塊1580、關系子系統1530、專用遠程機子系統1540和公共訪問點子系統524。圖15中所示的這些子系統是為了描述許可管理子系統1510的行為。遠程機30可以包括其他類型的子系統。許可管理子系統1510通過事件總線與組子系統1520通信,以形成和維持許可的邏輯分組(下文稱"許可組,,),以促成許可池、許可分配和許可組。許可組包括如下所述的許多許可串和/或其他許可組。許可組收集類似特征的許可并從而實現許可的積蓄。積蓄的許可是農場38中的任何遠程機30都可以使用的許可。每個許可組都保存該許可組和其他許可子組(即許可組之內的其他許可組)中的許可的集體能力。在一個實施例中,與許可池相關的信息是保持在動態存儲器240中的。在本實施例中,每個許可管理子系統1610都在本地存儲許可的總數以及分配給農場38中的遠程機30的許可數量。在授予積蓄的許可時,授予許可的許可管理子系統1510在動態存儲器240中建立條目,表示該積蓄的許可在"使用中"。其他每個許可管理子系統1510發現不能授予這樣的積蓄許可。在一個特定實施例中,動態存儲器240存儲與每個i午可組相關聯的遠程才凡ID/客戶端ID對,以標識4吏用中的積蓄許可。關系子系統1530維護著許可和遠程機30之間以及許可組與遠程機30之間的關聯。該關聯界定了每個許可和許可組中僅關聯的遠程機30可以獲得的許可數量(即"本地許可,,)。本地許可是被分配給農場38中一個遠程機且不和其他遠程機30共享的許可。許可管理子系統1510與關系子系統1530通信以生成、刪除、查詢和更新這種關聯。公共訪問點子系統524提供遠程過程調用(RPC),供遠程機30上的軟件產品使用。這些RPC界面使這種軟件產品能夠通過公共訪問子系統524通信,以訪問許可信息。仍然參考圖15,專用遠程機子系統1540與許可管理子系統1510通信,以針對需要許可的專用遠程機子系統1540的每種能力獲得特征許可。這發生在專用遠程機子系統1540初始化時以及任何許可事件之后。如果不能獲得特征許可,專用遠程機子系統1540會限制應為其提供許可的子系統的功能。而且,只要在與遠程機30發起客戶端會話的時候,專用遠程機子系統1540就使用許可管理子系統1510來獲得客戶端連接許可。許可管理子系統1510與持久存儲器系統服務模塊352通信,以便將特征和連接許可作為根據命名約定形成的許可串存儲在許可儲存庫1550中。許可儲存庫1550位于持久存儲器230中。循環冗余校驗(CRC)防止在將這種許可存儲在許可儲存庫1550中時該許可被竄改。許可管理子系統1510還在許可儲存庫1550中存儲與許可串相關的信息。例如,該信息可以表示哪個許可被分配給農場38的哪個遠程機30,在一些實施例中,可以表示每個許可的激活狀態。在一個實施例中,連接許可表1560存儲已經獲得連接許可的那些本地機的標識符。在一個實施例中,許可管理子系統1510支持來自請求使用被許可能力的子系統的事件,例如對可用積蓄許可的請求。該事件包括請求許可的子系統的UID以及該子系統所在遠程機30的UID。該事件還包含以許可組ID形式請求的許可類型(即特征或連接許可)。持久存儲器230中存儲的實際許可組ID是任意的,但遵守命名約定會為今后向遠程機30增加新軟件產品(即子系統)提供了靈活性。由尋求許可的請求子系統發送的事件包括(1)許可組類型的指示、請求許可的本地機和遠程機的身份以及"強迫獲取"標志。許可組類型的指示可以包括諸如負載管理的特征許可或諸如軟件應用產品的連接類型許可的標識。標識本地機和尋求許可的遠程機的字段可以包括85與遠程機和本地機相關聯的唯一標識符。例如,可以使用強迫獲取標志以在許可更改事件之后獲取連接許可。許可更改事件表示持久存儲器230中的許可信息被更改;例如,刪除、添加或轉讓了許可。在許可更改事件時,每個遠程機30試圖再次獲取在許可更改事件之前它所擁有的所有連接許可,因為對于該遠程機而言許可更改事件的具體原因是未知的。如果設置了該標記,該標記表示必需要獲取連接許可,即使這樣做使通往遠程機30的連接數超過允許連接的預定最大數。隨后不授予任何新的連接許可,直到使用中的連接許可數量降到該預定最大數之下。通過這種方式,不會在會話中因為許可更改事件而終止本地機連接。現在參考圖16,方框圖示出了強迫許可中涉及的部件的一個實施例。遠程機30包括服務器管理子系統508和許可管理子系統512。在一些實施例中,服務器管理子系統508和許可管理子系統512提供上述許可管理子系統1510的功能。在其他實施例中,應用管理子系統506和會話管理子系統510提供上述許可管理子系統1510的功能。在其他實施例中,其他子系統提供上述許可管理子系統1510的功能。在一個實施例中,服務器管理子系統508可以包括用于請求發出和收回許可的許可部件。在另一個實施例中,許可管理子系統512可以向從服務器管理子系統508接收的發出或收回許可的請求采用策略。在又一個實施例中,許可管理子系統512可以向提供強迫許可功能的遠程機30發送請求。在一些實施例中,管理服務504可以維持與提供強迫許可功能的第二遠程機30的連接。在其他實施例中,遠程機30提供強迫許可功能。在一些實施例中,在本地機10未能向遠程機發送預定數量心跳消息的時候,許可期滿并停止有效狀態。在這些實施例之一中,許可期滿收回本地機IO執行應用程序的授權。在其他實施例中,在預定時間期滿時會話超時。在一個實施例中,管理服務504在許可期滿后維持與會話相關的數據,直到會話期滿為止。在一些實施例中,與會話相關的數據可以包括諸如會話名稱、會話ID、客戶端ID、客戶端名稱、會話開始時間、服務器名(文件服務器的UNC路徑)、應用名稱(本地機基于瀏覽器名稱產生的唯一名稱)、別名、會話狀態(活動/許可、活動/未許可、重新連接/未許可)的信息。在另一個實施例中,本地機10停止發送心跳消息并在稍后時間點重新開始發送心跳消息。在又一個實施例中,如果本地機10在會話期滿之前重新開始發送心跳消息,管理服務504可以重新發放許可并使本地機10可以使用所維持的與會話相關的數據。現在參考圖17,流程圖示出了在本地計算機10的會話期間從遠程機30請求并維持許可所采取的步驟的一個實施例。簡而言之,應用流傳輸客戶端請求許可(步驟1702)。遠程機30接收對許可的請求,驗證與請求相關聯的權證并生成許可(步驟1704)。遠程機30向本地機10提供許可以及與許可相關聯的信息(步驟1706)。本地機10執行以上參考圖7的步驟214所述的應用。本地機發送表示本地機已經執行應用的心跳消息(步驟1708)。遠程機30接收該心跳消息并驗證隨該心跳消息發送的識別信息(步驟1708)。遠程機30生成與所執行應用和本地機10相關聯的會話(步驟1710)。將生成會話的結果發送到本地機10(步驟1712)。如以上參考圖7的步驟216所述,在執行應用的整個期間本地機發送心跳消息。本地機接收對所發送的心跳消息的響應(步驟1714)。本地機發送表示終止執行應用的心跳消息(步驟1716)。遠程機30接收該心跳消息并判斷是否刪除與會話相關的數據以及是否釋放與本地機10和所終止的應用相關聯的許可(步驟1718)。將遠程機30做出的判斷結果發送到本地機10(步驟1720)。現在參考圖17,更詳細地講,本地機IO上的應用流傳輸客戶端請求許可(步驟1702)。在一些實施例中,本地機IO在接收到與應用程序相關聯的訪問信息時請求該許可。在這些實施例之一中,本地機從發出由本地機10執行應用程序的授權的遠程機30請求許可。在一些實施例中,對許可的請求包括從遠程機30隨訪問信息接收的啟動權證。在其他實施例中,本地機10上的應用流傳輸客戶端552向web接口558發送請求,web接口558向遠程機30發送請求。在其他實施例中,遠程機上的會話管理子系統510接收并處理對許可的請求。遠程機30接收對許可的請求,驗證與請求相關聯的權證并生成許可(步驟1704)。在一個實施例中,遠程機30驗證是否授權本地機IO執行應用。在另一個實施例中,遠程機30判斷本地才幾10是否已經與現有許可相關聯。在又一個實施例中,遠程機30判定本地機10與現有許可相關聯,并為本地機10提供用于會話管理服務器562管理現有許可的標識符。在又一個實施例中,遠程機30生成新許可、會話標識符和管理新許可的會話管理服務器562的標識并向本地機10提供。在一些實施例中,在許可管理子系統1510接收許可請求的實施例中,遠程機30使用許可管理子系統1510對許可請求做出響應。該請求可以是為了特征許可或連接許可。許可管理子系統1510判斷是否已經授予許可,即,是否已經開始該特征或是否已經存在本地機的連接。如果已經授予了該許可,許可管理子系統1510向許可請求者發送"授予"事件。如果以前沒有授予許可,許可管理子系統1510判斷本地許可是否可用,本地許可即已經永久分配給遠程機30的許可。在一些實施例中,許可管理子系統1510通過檢查本地存儲器進行該判斷。如果本地許可可用,即,遠程機30具有比當前授予的更多的永久分配許可,許可管理子系統1510向許可請求者發送"授予,,事件。遠程機30向本地機10提供許可以及與許可相關聯的信息(步驟1706)。在一個實施例中,在從遠程機30接收到許可、會話標識符和會話管理服務器562的標識時,本地機10執行應用。本地機10可以如以上參考圖7的步驟214所述執行該應用。本地機發送表示本地機已經執行應用的心跳消息(步驟1708)。在一個實施例中,本地機向遠程機30發送心跳消息,以將心跳消息發送到會話管理服務器562。在另一個實施例中,本地機10響應于從遠程機30接收的會話管理服務器562的標識符直接向會話管理服務器562發送心跳消息。遠程機30接收該心跳消息并驗證隨該心跳消息發送的識別信息(步驟1708)。在一個實施例中,遠程機30'為會話管理服務器562。在另一個實施例中,會話管理服務器562驗證由本地機10與心跳消息一起提供的服務器標識符。在又一個實施例中,服務器標識符是由遠程才凡30向本地機IO提供的標識符。遠程機30生成與所執行應用和本地機10相關聯的會話(步驟1710)。在一個實施例中,會話管理服務器562在接收到心跳消息時生成與執行應用相關的新會話。在另一個實施例中,第三遠程機30生成新會話。在一些實施例中,會話管理服務器562在生成新會話時存儲與會話相關的信息。將生成會話的結果發送到本地機IO(步驟1712)。在一些實施例中,該結果確認會話的生成。在其他實施例中,該結果標識與會話相關的一個或多個應用。如以上參考圖7的步驟216所述,在執行應用的整個期間本地機發送心跳消息。在一個實施例中,在執行應用程序的整個期間本地機10以周期性間隔定期向會話管理服務器562發送心跳消息。本地機接收對所發送的心跳消息的響應(步驟1714)。在一個實施例中,本地機IO從會話管理服務器562接收心跳消息的接收確認。在另一個實施例中,本地機10響應于會話管理服務器562接收到心跳消息,從會話管理服務器562接收執行命令。本地機發送表示終止執行應用的心跳消息(步驟1716)。遠程機30接收該心跳消息并判斷是否刪除與會話相關的數據以及是否釋放與本地機10和所終止的應用相關聯的許可(步驟1718)。將遠程機30做出的判斷結果發送到本地機IO(步驟1720)。現在參考圖18,方框圖示出了可能與管理服務504監測的會話相關聯的狀態的一個實施例。在一個實施例中,管理服務504上的會話維護子系統510監測本地機10的會話并向會話分配狀態。在另一個實施例中,會話維護子系統510維持與許可相關的數據列表,該列表可以包括與本地機相關的標識符、與會話相關的標識符、會話狀態和表示遠程機30從本地機10上次接收消息的時間戳。在一些實施例中,會話維護子系統510包括會話監測線程。在這些實施例之一中,會話監測線程在周期性許可超時間隔醒來,掃描與許可相關的數據列表并更新會話的會話狀態。會話可以處于的笫一狀態為活動且許可狀態。在一個實施例中,當處于該狀態下時,本地機10維持有效許可,該許可授權執行應用。在另一個實施例中,會話管理服務器562保持與會話相關的數據。在一些實施例中,會話管理服務器562在第二遠程機上存儲與會話相關的數據。在一個實施例中,當本地機IO—開始執行應用時,用于本地機的會話處于活動且許可狀態。會話可以處于的第二狀態為活動且未許可狀態。在一個實施例中,當本地機10未能發送心跳消息且對本地機10的許可期滿時,會話處于該狀態。在另一個實施例中,如果會話處于該狀態,那么盡管許可已經期滿,但距會話期滿還未過去足夠時間,則認為會話是活動的。在一些實施例中,當會話處于這種狀態時,遠程機30或會話管理服務器562可以代表本地機IO存儲與會話相關的數據。在其他實施例中,如果本地機10在會話期滿之前發送心跳消息,則向本地機10發送帶有新許可的與會話相關的數據,且會話返回到活動且授權狀態。在一個實施例中,遠程機30使用會話標識符以及與本地機相關聯的標識符驗證會話未期滿并向本地機提供適當的與會話相關的數據。會話可能所處的第三狀態是斷開連接且不存在狀態。當會話期滿時,刪除與會話相關的數據。會話可以處于的第四狀態為再次連接且未許可狀態。在一個實施例中,當本地機10上的會話期滿時,刪除與會話相關的數據。在另一個實施例中,當本地機10發送新的心跳消息時,為本地機10生成新會話標識符和本地機標識符。在一些實施例中,本地機10再次向遠程機30進行認證,接收新許可并進入活動且授權狀態。表3總結了可能與會話相關的狀態。會話狀態描述活動\許可正常運行模式活動\未許可丟失心跳的期間〉許可超時且丟失心跳的期間<會話超時重新連接\未許可丟失心跳的期間〉會話超時或持有會話的CPS/RADE下線后再次上線表3在一些實施例中,打包機構使得能生成與應用程序相關聯的多個應用文件。在這些實施例之一中,打包機構實現多個應用文件的標識。在這些實施例的另一個中,打包機構使得能將個體應用文件分組成多個應用文件。在這些實施例的又一個中,打包機構實現在諸如文件服務器或應用服務器的遠程機上持有多個應用文件。在一個實施例中,打包機構在被稱為"分級機,,的遠程機上執行。在另一個實施例中,打包機構在"清潔機,,上執行。清潔機可以是其上僅安裝了操作系統的遠程機,而沒有額外的軟件、驅動程序、注冊表項或其他文件。在又一個實施例中,打包機在遠程機上執行,該遠程才幾模仿可以在其上執行應用程序的本地才幾。在一些實施例中,打包機構在其上執行的遠程機包括提供清潔機環境的隔離環境,即使在遠程機自身不是清潔機的情況下也可以向該清潔機環境中安裝應用。在一個實施例中,將多個應用文件稱為"程序包"。在另一個實施例中,該程序包可以是存儲多個應用文件的檔案文件。在又一個實施例中,該程序包可以是存儲多個應用文件以及包括與多個應用文件中的至少一個文件相關聯的元數據的文件的檔案文件。在一些實施例中,程序包包括多個應用文件,該多個應用文件包括應用程序。在其他實施例中,程序包包括多個應用文件,該多個應用文件包括應用程序套件。在其他實施例中,程序包包括多個應用文件,該多個應用文件包括應用程序和執行應用程序所需的先決條件。在一個實施例中,打包機構啟動在隔離環境中安裝程序的執行。在另一個實施例中,打包機構監測由安裝程序對隔離環境產生的更改。在又一個實施例中,該打包機構監測安裝程序在隔離環境中生成文件的情況。在又一個實施例中,該打包機構監測安裝程序在隔離環境中修改文件的情況。在一些實施例中,多個應用文件包括由安裝程序生成或修改的文件。在其他實施例中,打包機構實現文件系統過濾器驅動程序564以監測該隔離環境。在一些實施例中,打包機構可以生成多份多個應用文件,每一多個應用文件包括不同版本的應用程序,這些應用程序被配置成在不同目標環境下執行。在這些實施例之一中,將多個應用文件配置成在具有特定操作系統、修訂級、語言配置和主驅動器的本地機上執行(例如,可k乂將一份多個應用文件酉己置成在具有WindowsXPProfessional操作系統、修訂級SP2和以上,使用英語且主驅動器為。\的本地機上執行)。在這些實施例的另一個中,可以將超過一份多個應用文件組合成單個檔案文件。在這些實施例的又一個中,可以將每份多個應用文件稱為"目標,,。在這些實施例的又一個中,可以將含有一份或多份多個應用文件的檔案文件稱為"程序包"。現在參考圖19,方框圖示出了包括兩個目標的程序包,每個目標包括包括應用的多個應用文件。在圖19中,將應用程序"Foo"打包成兩個目標。兩個目標之間的差異為"目標語言",具體而言,目標l支持"英語",目標2支持"德語"。在一個實施例中,枚舉可用應用程序可以列出應用程序"Foo"。在另一個實施例中,將適當的多個文件發送到請求訪問應用程序的本地才幾。在又一實施例中,響應于對91本地機的評估做出決定,以向本地機發送特定目標。在又一個實施例中,與程序包相關聯的文件標識與程序包中的目標相關聯且在本地機上執行所需的至少一個特征。在一些實施例中,打包機構530通過執行與應用程序相關聯的安裝程序來準備要進行流傳輸的應用程序。在這些實施例之一中,打包機構在執行打包機構的遠程機30上產生隔離環境。在這些實施例的另一個中,打包機構在隔離環境中執行應用程序。在這些實施例的又一個中,打包機構標識由安裝程序生成或修改的多個應用文件。在這些實施例的又一個中,打包機構生成包括多個應用文件的檔案文件。在這些實施例之一中,打包機構生成包括多個應用文件的.CAB文件。在這些實施例的另一個中,打包機構生成目錄并在目錄中存儲多個應用文件。在一些實施例中,打包機構在文件服務器或其他遠程機30上存儲多個應用文件。在其他實施例中,打包機構在多個遠程機上存儲多個應用文件。現在參考圖20,流程圖示出了在用于無須重新引導操作系統而有效安裝應用程序的基于策略的方法中采取的步驟的一個實施例。簡而言之,打包機構在隔離環境之內執行安裝程序,安裝程序將與第二應用相關聯的至少一個應用文件安裝到隔離環境中(步驟2002)。攔截安裝程序對至少一個應用編程接口(API)的調用,該調用需要在重新引導操作系統之后執行動作(步驟2004)。不重新引導操作系統而執行至少一個被攔截調用的動作(步驟2006)。接收至少一個應用文件的文件類型標識(步驟2008)。響應于被標識的文件類型將至少一種執行方法與至少一個已安裝應用文件相關聯(步驟2010)。在至少一個服務器上存儲至少一個已安裝應用文件(步驟2012)。生成第二應用、至少一個已安裝應用文件、至少一個服務器位置和至少一個執行方法的枚舉(步驟2014)。現在參考圖20,更詳細地講,打包機構在隔離環境之內執行安裝程序,安裝程序將與第二應用相關聯的至少一個應用文件安裝到隔離環境中(步驟2002)。在一個實施例中,在隔離環境之內執行安裝程序使打包機構能夠隔離安裝程序對本地機上的文件或注冊表所做的更改。在另一個實施例中,打包機構攔截安裝程序請求的更改并將更改重定向到隔離環境以防止本地機上發生更改。在又一實施例中,打包92機構在隔離環境之內執行第二安裝程序,第二應用將與第三應用相關聯的至少一個應用文件安裝到隔離環境中。在一些實施例中,打包機構在隔離環境之內執行安裝程序,安裝程序在隔離環境內部執行與應用相關聯的至少一個可執行應用。在安裝程序執行應用的一個實施例中,執行應用使得能夠安裝第二應用。在這些實施例的另一個中,除了執行安裝程序之外,安裝應用還需要執行至少一個可執行應用。在這些實施例的又一個中,除了執行安裝程序之外,安裝應用需要執行因特網(Internet)瀏覽器應用。在一些實施例中,執行安裝程序以安裝程序,執行安裝程序包括執行安裝程序所需的第二程序。在這些實施例之一中,該程序為插件。在這些實施例的另一個中,該程序為活動X部件。在這些實施例的又一個中,該程序為Flash部件。在這些實施例的又一個中,該程序為定制工具條,例如Yahoo!或Google工具條。在其他實施例中,該程序為安裝到第二程序中的部件,不可獨立于第二程序執行。攔截安裝程序對至少一個應用編程接口(API)的調用,該調用需要在重新引導操作系統之后執行動作(步驟2004)。不重新引導操作系統而執行至少一個被攔截調用的動作(步驟2006)。在一些實施例中,執行動作包括執行在安裝期間修改的注冊表項的動作。參考以下的圖25提供了關于不重新引導操作系統而執行至少一個被攔截調用的更多細節。接收至少一個應用文件的文件類型標識(步驟2008)。響應于被標識的文件類型將至少一種執行方法與至少一個已安裝應用文件相關聯(步驟2010)。在一個實施例中,至少一種執行方法使得能將至少一個應用文件流傳輸到客戶端。在另一個實施例中,該至少一種執行方法使得能在客戶端上執行至少一個已安裝應用文件。在又一個實施例中,至少一種執行方法使得能在服務器上執行至少一個已安裝應用文件在又一個實施例中,該至少一種執行方法使得能將至少一個應用文件流傳輸到服務器。在至少一個服務器上存儲至少一個已安裝應用文件(步驟2012)。在一些實施例中,在將至少一個已安裝應用文件存儲在至少一個服務器上之前在隔離環境內執行已安裝應用程序。在這些實施例之一中,響應于執行已安裝應用程序生成額外的應用文件,在這些實施例的另一個中,生成數據文件。在這些實施例的又一個中,已安裝應用程序需要信息來完成安裝,在初始安裝過程之后需要該信息。在這些實施例的又一個中,需要諸如軟件產品標識符、許可標識符或其他信任狀的信息。在一些實施例中,提供標識符來標識至少一個已安裝應用文件在至少一個服務器上的位置。在這些實施例之一中,標識符符合通用命名標準(UNC)。在其他實施例中,將至少一個已安裝應用文件置于諸如.CAB文件的檔案文件中。在這些實施例之一中,在檔案文件中存儲多個應用文件,在至少一個服務器上存儲檔案文件。在這些實施例的又一個中,在多個服務器上存儲至少一個已安裝應用文件。在其他實施例中,將至少一個應用文件置于存儲應用文件的目錄中。生成第二應用、至少一個已安裝應用文件、至少一個服務器位置和至少一個執行方法的枚舉(步驟2014)。在一些實施例中,在文件中存儲枚舉。在其他實施例中,在清單文件中存儲枚舉。在其他實施例中,在XML文件中存儲枚舉。在一個實施例中,生成多個應用、與多個應用的每個相關聯的多個已安裝應用文件以及存儲多個已安裝應用文件的至少一個服務器的位置的枚舉。在另一個實施例中,生成包括第二應用與多個已安裝應用文件之間的關聯的枚舉。在又一實施例中,生成包括第二應用與含有至少一個已安裝應用文件的壓縮文件之間的關聯的枚舉。現在參考圖21,流程圖示出了在用于無須重新引導操作系統而安裝應用程序的基于策略的方法中采取的步驟的一個實施例。簡而言之,打包機構在隔離環境之內執行安裝程序,安裝程序將與第二應用相關聯的至少一個應用文件安裝到隔離環境中(步驟2102)。攔截安裝程序對至少一個應用編程接口(API)的調用,該調用需要在重新引導操作系統之后執行動作(步驟2104)。不重新引導操作系統而執行至少一個被攔截調用的動作(步驟2106)。接收至少一個應用文件的特征標識(步驟2108)。響應于被標識的特征將至少一種執行先決條件與至少一個已安裝應用文件相關聯(步驟2110)。在至少一個服務器上存儲至少一個已安裝應用文件(步驟2112)。生成第二應用、至少一個已安裝應用文件、至少一個服務器位置和至少一個執行先決條件的枚舉(步驟2114)。現在參考圖21,更詳細地講,打包機構在隔離環境之內執行安裝程序,安裝程序將與第二應用相關聯的至少一個應用文件安裝到隔離環境中(步驟2102)。在一個實施例中,在隔離環境之內執行安裝程序使打包機構能夠隔離安裝程序對本地機上的文件或注冊表所做的更改。在另一個實施例中,打包機構攔截安裝程序請求的更改并將更改重定向到隔離環境以防止本地機上發生更改。在又一實施例中,打包機構在隔離環境之內執行第二安裝程序,第二應用將與第三應用相關聯的至少一個應用文件安裝到隔離環境中。在一些實施例中,打包機構在隔離環境之內執行安裝程序,安裝程序在隔離環境內部執行與應用相關聯的至少一個可執行應用。在安裝程序執行應用的一個實施例中,執行應用使得能夠安裝第二應用。在這些實施例的另一個中,除了執行安裝程序之外,安裝應用還需要執行至少一個可執行應用。在這些實施例的又一個中,除了執行安裝程序之外,安裝應用需要執行因特網瀏覽器應用。向前參考圖23,方框圖示出了包括打包機構530和文件系統過濾器驅動程序534的系統的一個實施例,打包機構530將安裝程序2350執行到隔離環境532中,文件系統過濾器驅動程序534與打包機構530和隔離環境532通信。在一個實施例中,打包機構530通過將應用程序安裝到隔離環境532中產生程序包(如以上結合圖21所述)。在另一個實施例中,打包機構530通過執行安裝程序2350來將應用程序安裝到隔離環境532中。在一些實施例中,打包機構530包括圖形用戶界面。在這些實施例之一中,圖形用戶界面使打包機構530的用戶能夠定制由打包機構530產生程序包的過程。在這些實施例的另一個中,打包機構530與訪問控制套件520上的圖形用戶界面通信,使得訪問控制套件520的用戶能夠定制打包機構530產生程序包的過程。在一些實施例中,文件系統過濾器驅動程序532使得能在隔離環境532中安裝應用程序。在這些實施例之一中,文件系統過濾器驅動程序532攔截安裝程序2350的請求。在這些實施例的另一個中,文件系統過濾器驅動程序532將安裝程序2350的請求重定向到隔離環境532。在這些實施例之一中,文件系統過濾器驅動程序532存儲安裝程序2350所提請求的記錄。在這些實施例又一個中,文件系統過濾器驅動程序532存儲安裝程序2350生成或修改的文件拷貝。在一些實施例中,將所存儲的由文件系統過濾器驅動程序532生成的記錄作為包括應用程序的多個應用文件而存儲在一起。在其他實施例中,在文件服務器540上存儲多個應用文件。返回到圖21,攔截安裝程序對至少一個應用編程接口(API)的調用,該調用需要在重新引導操作系統之后執行動作(步驟2104)。不重新引導操作系統而執行至少一個被攔截調用的動作(步驟2106)。在一些實施例中,執行該動作包括安裝驅動程序,該驅動程序被配置成在引導計算機系統時啟動。在其他實施例中,執行動作包括執行在安裝期間修改的注冊表項的動作。接收至少一個應用文件的特征標識(步驟2108)。在一些實施例中,接收操作系統類型的標識。在其他實施例中,接收操作系統所用語言的標識。在其他實施例中,接收第二應用版本的標識。響應于被標識的特征將至少一種執行先決條件與至少一個已安裝應用文件相關聯(步驟2110)。在一個實施例中,響應于向特征應用策略將至少一種執行先決條件與至少一個已安裝應用文件相關聯。在另一個實施例中,腳本與至少一個已安裝應用文件相關,該腳本包括可執行程序,該可執行程序判斷客戶端上是否存在至少一個執行先決條件。向前參考圖22,屏幕快照示出了要在本地機上執行的腳本枚舉的一個實施例。腳本2202的類型表示應當何時執行該腳本,例如,在執行應用之前,或在終止執行應用之后。隔離指示符24表示是否應當在本地機10上的隔離環境中執行腳本。如圖22所示,在一些實施例中,在將多個應用文件打包到一起并存儲在持有多個應用文件的遠程機3(K上時,將腳本與應用程序相關聯。在一些實施例中,至少一個執行先決條件要求在執行至少一個已安裝應用文件的系統上安裝操作系統的版本。在其他實施例中,至少一個執行先決條件要求在執行至少一個已安裝應用文件的系統上安裝第二應用的版本。在其他實施例中,將一指令與至少一個已安裝應用文件相關聯,該指令表明將由客戶端使用的笫二已安裝應用文件未能滿足至少一個執行先決條件。在其他實施例中,將一指令與至少一個已安裝應用文件相關聯,該指令表明用于在客戶端上執行至少一個已安裝應用文件的第二執行方法未能滿足至少一個執行先決條件。在這些實施例之一中,將一執行方法與至少一個已安裝應用文件相關聯,該執行方法授權將包括第二應用的多個應用文件流傳輸到本地機以在本地機上執行。在這些實施例的另一個中,本地機的評估標識與本地機上未包括的至少一個已安裝應用文件相關聯的至少一個特征。在這些實施例的又一個中,收回對執行多個應用文件的授權。在這些實施例的又一個中,提供第二執行方法用于執行多個應用文件,第二執行方法使得能在遠程機上執行多個應用文件并從遠程機向本地機傳輸應用輸出數據。在至少一個服務器上存儲至少一個已安裝應用文件(步驟2112)。在一些實施例中,在將至少一個已安裝應用文件存儲在至少一個服務器上之前在隔離環境內執行已安裝應用程序。在這些實施例之一中,響應于執行已安裝應用程序生成額外的應用文件。在這些實施例的另一個中,生成數據文件。在這些實施例的又一個中,已安裝應用程序需要信息來完成安裝,在初始安裝過程之后需要該信息。在這些實施例的又一個中,需要諸如軟件產品標識符、許可標識符或其他信任狀的信息。在一些實施例中,提供標識符來標識至少一個已安裝應用文件在至少一個服務器上的位置。在這些實施例之一中,標識符符合通用命名標準(UNC)。在其他實施例中,將至少一個已安裝應用文件置于諸如.CAB文件的檔案文件中。在這些實施例之一中,在檔案文件中存儲多個應用文件,在至少一個服務器上存儲檔案文件。在這些實施例的又一個中,在多個服務器上存儲至少一個已安裝應用文件。在其他實施例中,將至少一個已安裝應用文件置于存儲應用文件的目錄中。生成第二應用、至少一個已安裝應用文件、至少一個服務器位置和至少一個執行先決條件的枚舉(步驟2114)。在一些實施例中,在文件中存儲枚舉。在其他實施例中,在清單文件中存儲枚舉。在其他實施例中,將枚舉存儲在XML文件中。在一個實施例中,生成多個應用、與多個應用的每個相關聯的多個已安裝應用文件以及存儲多個已安裝應用文件的至少一個服務器的位置的枚舉。在另一個實施例中,生成包括第二應用與多個已安裝應用文件之間的關聯的枚舉。在又一實施例中,生成包括第二應用與含有至少一個已安裝應用文件的壓縮文件之間的關聯的枚舉。返回步驟2106,在不重新引導操作系統而執行至少一個被攔截調用的動作時,在一些實施例中,提供虛擬化安裝和執行環境,其消除了在執行已安裝應用之前重新引導系統的需要。現在參考圖24,流程圖示出了執行安裝程序需要重新引導執行安裝程序的本地機上的操作系統的實施例。常規的應用安裝程序將文件拷貝到被安裝應用的遠程機上(步驟2402)。在一些實施例中,拷貝文件可能導致重新引導遠程機。應用安裝程序試圖將至少一個文件拷貝到鎖定文件(步驟2404)。在一個實施例中,僅在執行操作系統(或"重新引導")時可以對鎖定文件寫入。在MoveFileEx()Win32API中設置MOVE-FILE-DELAY—UNTIL—REBOOT選項(步驟2406),應用安裝程序調用系統關閉/重新引導功能(步驟2408)。重新引導之后,則在重新引導時安裝一開始鎖定的文件(步驟2410)。現在參考圖25,方框圖示出了打包機構在其上安裝應用程序的遠程機30的一個實施例。遠程機30包括系統資源2502、系統API2504和用于安裝應用的應用安裝程序2506。遠程機30還包括功能轉播機構2508、安裝后處理器模塊2510和應用隔離環境2512。在一些實施例中,將應用程序安裝到隔離環境2512中使得能不重新引導遠程機30而進行安裝。在這些實施例之一中,對隔離環境2512中虛擬化的系統資源2502所做的更改不改變遠程機30上的相應系統資源2502.由于未更改遠程機30上的系統資源,因此不需要重新引導機器以保護系統資源不被進行不當更改。現在參考圖25,更詳細地講,系統資源2502可以包括注冊表項、系統DLL及其他操作系統防止在遠程機30執行時寫入的鎖定文件。系統API2504包括用于重新引導被應用安裝程序2506調用且被功能轉播機構2508轉播的系統的API,以防止重新引導遠程機30。應用隔離環境2512向應用安裝程序2506提供了具有操作系統資源的視圖的環境。在一個實施例中,應用隔離環境2512為隔離環境556。在一些實施例中,應用隔離環境2512提供了諸如文件系統、注冊表和命名對象的虛擬化。在一個實施例中,應用安裝程序2506在應用隔離環境2512之內執行。在另一個實施例中,應用安裝程序2506將應用程序安裝導應用隔離環境2512中。在又一個實施例中,應用安裝程序2506在應用隔離環境2512之外執行并在應用隔離環境2512內安裝應用程序。在一些實施例中,在應用安裝程序2506向應用隔離環境2512中安裝應用時,應用隔離環境2512避開了重新引導遠程機30的需要。在一個實施例中,應用隔離環境2512攔截將應用文件拷貝到鎖定文件的請求。在另一個實施例中,應用隔離環境2512將拷貝應用文件的請求重定向到未鎖定文件。在又一個實施例中,應用隔離環境2512將拷貝應用文件的請求重定向到虛擬化文件。在又一個實施例中,對拷貝應用文件的請求重定向使得能夠在無須重新引導遠程機30的情況下安裝應用文件。例如,如果應用安裝程序2506試圖向鎖定文件寫入,例如向c:\windows\system32\mfc40.dll寫入,則應用隔離環境2512攔截該請求并將文件重定向到另一未鎖定位置。這種避免鎖定文件的能力表示可以無須利用MoveFileExOAPI和MOVE-FILE-DELAY-UNTIL—REBOOT標記來安裝文件。這種能力消除了對重新引導遠程機30的需要。在一個實施例中,功能轉播機構2508是文件系統過濾器驅動程序564。在另一個實施例中,文件系統過濾器驅動程序564包括功能轉播機構2508。在又一個實施例中,功能轉播機構2508攔截來自應用安裝程序2506的請求以重新啟動遠程機30。在一些實施例中,應用隔離環境2512提供了將應用文件拷貝到未鎖定文件。然而,應用隔離環境2512不解決應用安裝程序2506要求重新引導遠程機30的請求。功能轉播機構2508攔截重新引導請求并對應用安裝程序2506做出響應。應用隔離環境2512使得能將應用文件拷貝到未鎖定文件。然而,在一些實施例中,安裝應用需要其他動作,這些動作可以在重新引導時發生。防止重新引導并不阻止在安裝過程中完成這些動作的需要。功能轉播機構2508可以提供執行與安裝應用相關的動作的功能。例如,在安裝應用期間,可以寫入注冊表項,例如HKLM\SYSTEM\CurrentControlSet\Control\Session—Manager\Pending-FileRenameOperations。其他應用可以安裝需要在引導機器時啟動的服務或驅動程序。安裝后處理器模塊2510識別在安裝期間被修改的應用文件,并執行與該應用文件相關聯的動作。現在參考圖26,流程圖示出了在應用隔離環境2512中安裝應用所采取的步驟的一個實施例。應用隔離環境2512向應用安裝程序提供服99務器操作系統的虛擬化視圖(步驟2602)。對涉及系統重新引導和停機的服務器上的API進行轉播(步驟2604)以防止應用安裝程序2506導致重新引導。應用安裝程序2506請求到鎖定文件的文件拷貝操作,該請求被攔截并重定向到不沖突的位置(步驟2606)。當應用安裝程序2506試圖通過調用系統API重新引導時,攔截該請求并防止重新引導(步驟2608)。安裝后處理器模塊2510執行在重新引導之后通常發生的動作(步驟2610),然后可以不用重新引導遠程機30而在應用隔離環境2512中執行應用(步騍2612)。在一些實施例中,將應用程序安裝到應用隔離環境2512中之后,打包機構標識在安裝應用程序期間生成或修改的多個應用文件。在這些實施例之一中,在遠程機上存儲多個應用文件。在這些實施例的另一個中,檢索多個應用文件的本地機可以執行該應用程序。在一些實施例中,打包機構530在包括隔離環境532和文件系統過濾器驅動程序534的遠程機上執行并將應用程序安裝到隔離環境532中。在這些實施例之一中,該遠程機被稱為"清潔機(cleanmachine)"或"分級機"。在這些實施例的另一個中,隔離環境532包括應用隔離范圍,該應用隔離范圍提供由清潔機上的操作系統提供的本地資源的可修改、虛擬化實例。在這些實施例的又一個中,隔離環境532包括提供本地資源的只讀視圖的系統隔離范圍。在這些實施例的又一個中,本地資源的只讀視圖包括文件系統的快照和清潔機上駐留的注冊表。在一個實施例中,重定向器攔截要求更改本地資源的請求。在一些實施例中,重定向器為文件系統過濾器驅動程序534。在另一個實施例中,由打包機構530執行的安裝程序提出更改請求。在又一個實施例中,將應用程序安裝到清潔機上需要對本地資源進行更改。在又一個實施例中,重定向器將該請求重定向到隔離環境532。在一些實施例中,將更改本地資源的請求重定向到隔離環境532造成與安裝應用程序相關聯的更改被隔離。在其他實施例中,將更改本地資源的請求記錄并存儲在存儲元件中。在這些實施例之一中,與安裝應用程序相關聯的所有更改都駐留在存儲元件中。在這些實施例的另一個中,本地機552檢索存儲元件的內容并對駐留在本地機552上的隔離環境556中的本地資源實施更改,這導致在本地機552上安100裝應用程序。在一些實施例中,可能需要對本地機io進行啟動前分析。在這些實施例之一中,本地機10驗證至少一個特征包括在本地機10中。在這些實施例的另一個中,在啟動前分析判定本地機IO缺少至少一個特征之后將該至少一個特征添加到本地機10。在這些實施例的又一個中,持有應用程序的遠程機包括該至少一個特征且本地機未能包括該至少一個特征將阻止執行應用程序。在又一個實施例中,該應用程序要求要執行的本地機上存在至少一個特征。在一些實施例中,打包機構使得能識別至少一個特征,以在對本地機進行啟動前分析時使用。在其他實施例中,打包機構使得能將至少一個特征與可以在本地機上執行的應用程序相關聯。在其他實施例中,打包機構使得能將可執行腳本與應用程序相關聯,本地機執行該可執行腳本以完成啟動前分析。在其他實施例中,在執行應用程序之后需要本地機上存在該至少一個特征。打包機構可以提供簽署多個應用文件的功能。在一個實施例中,簽署多個應用文件使得本地機能夠驗證多個應用文件的完整性。在另一個實施例中,簽署多個應用文件防止本地機執行被破壞的應用程序。在一些實施例中,計算多個應用文件中文件的密碼校驗和,例如MD4散列碼、MD5散列碼或SHA-l散列碼。在其他實施例中,計算多個應用文件中每個文件的密碼校驗和。在這些實施例之一中,在第二文件中存儲密碼校驗和。在這些實施例的另一個中,將第二文件與多個應用文件相關聯。在一些實施例中,將第二文件添加到多個應用文件。在其他實施例中,利用諸如X.509證書的證書簽署第二文件。在其他實施例中,檢索多個應用文件的本地機利用證書的公開部分驗證簽名。在其他實施例中,本地機接收證書的公開部分和證書委托列表的標識以驗證簽名。在這些實施例之一中,本地機接收包含證書委托列表的標識的注冊表項。在一個實施例中,打包機構提供了用于定制隔離環境的功能。在另一個實施例中,打包機構提供了用于生成存儲隔離環境定義的文件的功能。在又一個實施例中,打包機構包括具有多個應用文件的文件,該多個應用文件包括應用程序。在又一個實施例中,本地機從遠程機接收具有訪問信息的文件。在一些實施例中,將多個應用文件存儲在檔案文件中。在這些實施例之一中,該檔案文件為CAB文件格式。在這些實施例的另一個中,該檔案文件格式不支持由應用程序對文件的短文件名進行規格說明。在這些實施例的又一個中,諸如WINDOWS2000的操作系統可能不支持由應用程序對文件的短文件名做規格說明。在其他實施例中,諸如WINDOWSXP的操作系統支持由應用程序對文件的短文件名做規格說明。在這些實施例之一中,執行文件的請求必需包括文件的正確文件名。在一個實施例中,可以生成映射以將多個應用文件中文件的長文件名與文件的短名相關聯。在另一個實施例中,在多個應用文件中的文件中存儲映射。在又一個實施例中,僅當文件的長文件名長于l2個字符時文件才具有短文件名。在一些實施例中,短文件名是與該文件相關聯的虛擬文件名。在這些實施例之一中,在文件以長文件名存儲的情況下,將該文件發送到本地機io來執行。在這些實施例的另一個中,本地機10上的應用文件利用短文件名請求執行文件。在這些實施例的又一個中,盡管執行文件的請求未使用本地機上的文件名稱(長文件名),但映射使得能夠執行該文件。在一些實施例中,打包機構530生成該映射。在這些實施例之一中,打包機構530為具有長文件名的文件選擇短文件名。在這些實施例的另一個中,執行打包機構530的遠程機3(K上的操作系統為具有長文件名的文件選擇短文件名。在這些實施例的又一個中,選擇不與遠程機30'上的第二個短文件名沖突的唯一短文件名。在這些實施例的又一個中,由打包機構530執行的安裝程序生成包括長文件名和短文件名之間映射的文件。在其他實施例中,將該映射發送到檢索該文件的本地機10。在這些實施例之一中,本地機IO在執行文件時引用該文件。應用程序的多個文件,將其流傳輸到本地機并在本地機上執行。這些實例是為了示例而非限制本發明。實例1在一個實施例中,本地才幾10的用戶請求訪問應用程序枚舉中標識的應用程序,例如文字處理程序、web瀏覽應用或數據表程序。在本實施例的一個實例中,本地機IO執行程序鄰域應用,該程序鄰域應用從遠程機30接收本地機10可用的應用枚舉。在本實施例的另一個實例中,本地機10與諸如遠程機30'〃的web服務器通信,以接收應用枚舉。本地機10的用戶可以通過選擇代表被枚舉的應用程序的圖形表示來請求訪問被枚舉的應用程序。本地機10的用戶可以請求訪問此前未安裝在本地機IO上的應用程序。本地機10將訪問應用程序的請求發送到遠程機30。本地機10接收遠程機30"的標識,該遠程機30"提供對包括應用程序的多個應用文件的訪問。本地機IO標識執行應用程序所需的至少一個特征。在本實施例的一個實例中,本地機IO接收由遠程機30發送到本地機10的具有遠程機30"的標識的至少一個特征。在本實施例的另一個實例中,本地機10在接收到遠程機30"的標識之后從遠程機30"檢索至少一個特征。可以要求本地機IO在接收到檢索多個應用文件的授權之前包括至少一個特征。或者,可以要求本地機IO在執行多個應用文件之前包括至少一個特征。在本實施例的一個實例中,可以要求本地機10在執行多個應用文件的整個期間包括至少一個特征。在本地機IO驗證本地機10包括至少一個特征時,本地機10檢索多個應用文件中的至少一個應用文件并執行所檢索的應用文件以執行應用程序。實例2遠程機30從本地機IO接收訪問應用程序的請求。遠程機30對本地機10進行認證。在本實施例的一個實例中,遠程機30從本地機10請求信任狀,例如用戶名和口令。在本實施例的另一個實例中,遠程機30向本地機10發送收集代理404。收集代理404收集有關本地機10的信息并將該信息發送到遠程機30以在認證本地機10時使用。在本實施例的又一個實例中,遠程機30向策略引擎406提供有關本地機IO的信息,用于對本地機IO進行認證。遠程機30可以包括策略引擎406。或者,遠程機30可以與包括策略引擎406的遠程機30'通信。遠程機30選擇應用程序的執行方法。遠程機30可以響應于對本地機10的認證做出選擇。在本實施例的一個實例中,遠程機30向所收集的本地機10的信息采用策略。在本實施例的另一個實例中,遠程機30響應于用于應用程序的策略做出選擇。在本實施例的又一個實例中,遠程機30響應于用于與應用程序相關的文件類型的策略做出選擇。103遠程機30可以查詢文件以選擇應用程序的執行方法。遠程機30可以選擇使本地機10能夠接收在遠程機30'上執行應用程序所產生的應用輸出數據的應用程序執行方法。遠程機30可以選擇使本地機10能夠在檢索包括應用程序的多個應用文件之后在本地執行應用程序的應用程序執行方法。在一個實施例中,遠程機30選擇使本地機10能夠在通過應用流傳輸會話檢索包括應用程序的多個應用文件之后在本地執行應用程序的應用程序執行方法。在本實施例的一個實例中,本地機10與持有多個應用文件的遠程機建立應用流傳輸會話,本地機IO跨過應用流傳輸會話啟動多個應用文件的檢索,且本地機io在檢索多個應用文件中的第二應用文件時執行所檢索到的多個應用文件中的第一應用文件。在本實施例的另一個實例中,本地機10在從第一應用接收到訪問第二應用文件的請求時執行多個應用文件中的第一應用文件并檢索多個應用中的第二應用文件。對于所選擇的執行方法使本地機10能夠在包括應用程序的多個應用文件中檢索至少一個應用文件的實施例而言,遠程機30標識持有可由本地機10訪問的應用程序的遠程機30"。遠程機30"持有包括應用程序的多個應用文件。遠程機30"可以持有多份包括各種應用程序的多個應用文件。在本實施例的一個實例中,遠程機30"持有針對應用程序若干不同版本的每種的多個應用文件。遠程機30"持有將包括特定應用程序的多個應用文件與應用程序的描述相關聯的文件。該文件還可以標識在向機器發送多個應用文件之前需要在機器上標識的一個或多個執行先決條件。該文件還可以包括遠程機30"在網絡上位置的標識。在本實施例的一個實例中,遠程機30查詢文件以標識遠程機30"在網絡上位置。遠程機30選擇遠程機30"。遠程機30可以選擇其在網絡上的位置可以被本地機10訪問到的遠程機30"。遠程才凡30可以選擇持有與本地機10兼容的應用程序版本的遠程機30"。遠程機30響應于接收到訪問應用程序的請求,向本地機IO發送所選擇的應用程序執行方法的標識以及遠程機30"的標識。遠程機30還可以向本地機IO發送文件。實例3在一個實施例中,本地機IO接收所選擇的應用程序執行方法的標識以及提供對包括應用程序的多個應用文件的訪問的遠程機30"的標識。本地機IO驗證對訪問應用程序的授權。在本實施例的一個實例中,本地機10執行自身的啟動前分析。本地機10標識至少一個特征并驗證本地機10上是否存在至少一個特征。該至少一個特征可以是維持訪問和執行應用程序的授權的先決條件。驗證本地機10上存在至少一個特征可以確保本地機10的特征和應用程序的系統需求之間的兼容性,并可以額外確保與安全政策或許可協議的遵守。在成功完成啟動前分析時,本地機10與提供對多個應用文件的訪問的遠程機30"建立應用流傳輸會話。應用流傳輸會話可以是本地機10可以請求和接收多個應用文件中的文件的任何連接。建立應用流傳輸會話可以使本地機10能夠在檢索多個應用文件中的所有文件之前執行多個應用文件中的第一應用文件。本地機10可以啟動執行應用程序,同時繼續檢索多個應用文件中的其他應用文件。或者,本地機10可以在檔案文件中檢索多個應用文件并在從檔案文件中提取第二應用文件的同時執行第一個提取的應用文件。實例4在一個實施例中,本地機10上的應用流傳輸客戶端552從遠程機30檢索多個應用文件。應用流傳輸客戶端包括流傳輸服務554、隔離環境556和文件系統過濾器驅動程序564。流傳輸服務554與遠程機30建立應用流傳輸會話,用于請求和檢索多個應用文件。流傳輸服務554在隔離環境556之內執行應用文件。文件系統過濾器驅動程序564通過攔截來自執行應用文件的請求并將該請求重定向到隔離環境556使得能夠在隔離環境556之內執行應用文件。在本實施例的一個實例中,流傳輸服務554檢索包括多個應用文件的檔案文件,該多個應用文件包括應用程序。流傳輸服務554從檔案文件中提取來自多個應用文件的第一應用文件。第一應用文件可以是可執行文件。流傳輸服務554可以在隔離環境556之內執行第一應用文件。執行笫一應用文件可以啟動應用程序的執行。在另一個實施例中,在隔離環境556中執行的第一應用文件從本地機IO請求對多個應用文件的枚舉。文件系統過濾器驅動程序564攔截枚舉請求并將請求重定向到流傳輸服務554。在流傳輸服務554檢索多個應用文件的實施例中,流傳輸服務554可以生成多個應用文件的枚舉。在流傳輸服務554檢索包括多個應用文件的檔案文件的實施例中,流傳輸服務554可以響應于所檢索的檔案文件中包括的枚舉生成多個應用文件的枚舉。在其他實施例中,在多個應用文件中的至少一個應用文件駐留在遠程機30上且還沒有被流傳輸服務554檢索到本地機10上的時候,流傳輸服務554僅檢索多個應用文件的枚舉。在這些實施例中,流傳輸服務554可以響應于所檢索的枚舉產生多個應用文件的枚舉。在這些實施例的一個實例中,雖然本地機10僅有枚舉,但流傳輸服務554向第一應用文件表明多個應用文件駐留在本地機10上。實例5在一個實施例中,在隔離環境556中執行的第一應用文件從本地機IO請求對多個應用文件的枚舉標識的文件進行訪問。如果所請求的文件在第一應用文件可訪問的隔離環境556之內的用戶范圍內,第一應用文件訪問所請求的文件。如果所請求的文件不在用戶范圍或隔離環境556中,文件系統過濾器驅動程序564攔截該請求并將該請求重定向到流傳輸服務554。如果所請求的文件是含有多個應用文件的檔案文件中的文件,流傳輸服務554提取所請求的文件并將所請求的文件存儲在本地機10上。流傳輸服務554可以在隔離環境556之內存儲該文件。當文件被存儲在隔離環境556中時滿足對該文件的請求。如果所請求的文件不在隔離環境556中或包括多個應用文件的檔案文件中,流傳輸服務554從遠程機30請求該文件。流傳輸服務554可以通過應用流傳輸會話從遠程機30接收文件。流傳輸服務554將所接收的文件存儲在隔離環境556中。當文件被存儲在隔離環境556中時滿足對該文件的請求。在本實施例的一個實例中,在隔離環境556中的第二用戶范圍中執4亍第二應用文件。第二應用文件請求訪問最初由第一應用文件請求的文件。如果所請求的文件的拷貝不在第二用戶范圍內,使用隔離環境556中存儲的所請求的文件拷貝滿足對應用文件的請求。實例6在一個實施例中,本地機10從遠程機30接收所選擇的應用程序1程機3(K的標識。本地機10成功完成本地機10的啟動前分析。本地機IO從遠程機30接收授權執行應用程序的許可。在本實施例的一個實例中,該許可要求本地機10向會話管理服務器562發送心跳消息以維持執行應用程序的授權。心跳消息可以包括表示啟動執行應用程序、終止執行應用程序的消息以及在執行應用程序的整個期間周期性發送的消息。心跳消息還可以包括關于本地機10的狀態的消息,比如本地機IO何時連接到網絡,或本地機IO何時終止與網絡的連接。在本實施例的另一個實例中,該許可執行預定時間段,在該預定時間段內本地機10具有執行應用程序的授權。本地機10與遠程機3(K建立應用流傳輸會話并在多個應用文件中檢索至少一個應用文件。在執行至少一個應用文件期間,在所接收的許可要求發送心跳消息的實施例中,本地機10向會話管理服務器562發送心跳消息以維持執行至少一個應用文件的授權。實例7在一個實施例中,本地機IO接收所選擇的應用程序執行方法的標識以及提供對包括應用程序的多個應用文件的訪問的遠程機3(K的標識。本地機10成功完成本地機10的啟動前分析。本地機10接收指定預定時間段的許可,在該預定時間段內本地機10具有執行應用程序的授權。本地機10與遠程機30'建立應用流傳輸會話并在多個應用文件中檢索至少一個應用文件。在本實施例的一個實例中,本地機10檢索多個應用文件的子集,該子集包括在本地機10未連接到網絡時執行應用程序必需的每個文件。本地機10將該子集存儲在本地機10上的高速緩沖存儲器中。在該預定時間段內的時間點,從網絡斷開本地機IO,本地機10從本地機10的用戶接收訪問應用程序的請求。在本實施例的一個實例中,本地機10是諸如膝上計算機的裝置,本地機10的用戶處于禁止連接到網絡的環境中,例如處在飛機中。在從用戶接收到該請求時,本地機10可以從高速緩沖存儲器檢索來自多個應用文件的應用文件并執行該應用程序。實例8在另一個實施例中,本地機IO接收所選擇的應用程序執行方法的107標識以及提供對包括應用程序的多個應用文件的訪問的遠程機30'的標識。本地才凡10可以接收駐留在本地機10上以檢索多個應用文件的第一客戶端代理的標識,該笫一客戶端代理例如為應用流傳輸客戶端。在本實施例的一個實例中,本地機10未能成功完成自身的啟動前分析。本地機10可能缺少與應用程序要求兼容所需的特征,例如特定的設備驅動程序或操作系統。本地機IO可能缺少遵守安全策略所需的特征,該安全策略例如是特定活動目錄中的成員身份或對訪問專用網絡的授權。本地機IO可以是一種與應用程序的要求兼容的機器,例如試圖訪問計算強化的應用程序的個人數字助理,或試圖執行由專用網絡上的遠程機持有的安全應用的信息站處的公共機器。本地機10響應于本地機10缺少訪問應用程序所需的至少一個特征的判斷做出不通過應用流傳輸會話檢索多個應用文件的決定。本地機10執行駐留在本地機10上的第二客戶端代理而不是執行所標識的第一客戶端代理。在本實施例的一個實例中,本地機io在無法成功完成啟動前分析的情況下接收要執行的第二客戶端代理的標識。本地機10請求在遠程機30"上執行應用程序。第二客戶端代理接收在遠程機30"上執行應用程序產生的應用輸出數據。第二客戶端代理在本地機10上顯示應用輸出數據。實例9在一個實施例中,網絡管理員為本地機10的用戶提供對應用程序的訪問。管理員在遠程機30'上執行應用以產生包括應用程序的多個應用文件。該應用可以包括圖形用戶界面。管理員可以使用圖形用戶界面來標識應用程序以及與該應用程序相關聯的安裝程序,定義要在授權訪問應用程序時所采用的策略,并指定有關于所提供的訪問類型的特征,包括試圖訪問或執行應用程序的本地機IO要滿足的要求。管理員可以標識安裝整個應用程序的安裝程序或應用程序的一部分,例如升級或補丁。在本實施例的一個實例中,遠程機30包括打包機構530。打包機構530在遠程機30上的隔離環境532中執行安裝程序。執行安裝程序造成向隔離環境532中安裝與應用程序相關聯的至少一個應用文件。遠程機30可以包括文件系統過濾器驅動程序534,其通過攔截安裝程序在本地機10上安裝應用文件的請求并將該請求重定向到隔離環境532來確保將應用文件安裝到隔離環境532中。打包機構530可以使用文件系統過濾器驅動程序534來維持安裝到隔離環境532中的每個應用文件的記錄。安裝程序可以向隔離環境532中安裝多個應用文件。打包機構530生成包括多個應用文件中的應用文件枚舉的文件。該文件可以包括與多個應用文件相關的信息以及策略要求,與多個應用文件相關的信息例如為多個應用文件包括的應用程序的類型、應用程序的版本、與應用程序相關聯的執行先決條件,策略要求例如為特定應用程序所需的執行方法。打包機構530在遠程機3(K上存儲多個應用文件和該文件。在一個實施例中,網絡管理員標識包括現有應用程序更新版本的應用程序或包括應用程序的多個應用文件中的應用文件。可以將本發明提供為實現在一種或多種制品上或中的一種或多種計算機可讀程序。該制品可以是軟盤、硬盤、光盤、數字多用盤、閃速存儲卡、PROM、RAM、ROM或磁帶。通常,可以用任何程序設計語言實現計算機可讀程序。可以使用的一些語言實例包括(:丄++』#或JAVA。可以將軟件程序作為目標代碼存儲在一種或多種制品上或中。盡管已經參考特定優選實施示例出和描述了本發明,本領域的技術人員應當理解,在不脫離如以下權利要求所界定的本發明的精神和范圍的情況下可以在其中做出各種形式和細節的變化。權利要求1.一種用于由遠程機選擇應用程序的執行方法的方法,所述方法包括(a)接收信任狀;(b)響應于所接收的信任狀提供本地機可用的多個應用的枚舉;(c)接收執行被枚舉的應用的請求;以及(d)響應于策略選擇執行被枚舉的應用的預定數量的方法之一,所述預定數量的方法包括用于所述被枚舉的應用的應用流的方法。2.根據權利要求1所述的方法,還包括提供與所述被枚舉的應用相關聯的訪問信息的步驟,所述訪問信息是響應于所選擇的方法產生的。3.根據權利要求1所述的方法,其中步驟(c)還包括接收執行被枚舉的應用的請求,所述被枚舉的應用包括多個應用文件。4.根據權利要求3所述的方法,其中步驟(c)還包括接收持有多個應用文件的服務器的標識。5.根據權利要求3所述的方法,其中步驟(c)還包括接收多個應用文件的位置的標識,所述標識符合通用命名標準(UNC)。6.根據權利要求1所述的方法,其中步驟(d)還包括選擇到本地機的所述被枚舉的應用的應用流的方法。7.根據權利要求1所述的方法,其中步驟(d)還包括選擇用于在遠程機上執行所述被枚舉的應用的方法。8.根據權利要求1所述的方法,其中步驟(d)還包括選擇用于在本地機上執行所述被枚舉的應用的方法。9.根據權利要求1所述的方法,其中步驟(d)還包括選擇用于下述的方法(d-l)向遠程才凡流傳輸所述被枚舉的應用;(d-2)在所述遠程機上執行所述,皮枚舉的應用;以及(d-3)向所述本地機提供執行所述被枚舉的應用產生的應用輸出數據。10.根據權利要求9所述的方法,其中步驟(d)還包括在步驟(d-l)之前評估所述本地機。11.根據權利要求10所述的方法,其中步驟(d)還包括響應于所述評估決定對所述被枚舉的應用進行流傳輸。12.根據權利要求9所述的方法,其中步驟(d-l)包括對包括所述被枚舉的應用的多個文件之一進行流傳輸。13.根據權利要求9所述的方法,其中步驟(d)還包括響應于對所接收的信任狀的評估選擇所述方法。14.根據權利要求9所述的方法,其中步驟(d-3)還包括通過表示層協議提供所述應用輸出數據。15.根據權利要求14所述的方法,其中步驟(d-3)還包括通過獨立計算結構表示層協議或遠程桌面Windows表示層協議或X-Windows表示層協議提供應用輸出數據。16.根據權利要求1所述的方法,其中步驟(d)還包括標識要執行的所述被枚舉的應用的版本。17.根據權利要求16所述的方法,其中步驟(d)還包括響應于所述本地機的特征的標識來標識所述版本。18.根據權利要求1所述的方法,其中步驟(d)還包括決定執行與所述本地機的特征兼容的所述被枚舉的應用的版本。19.根據權利要求1所述的方法,其中步驟(d)還包括決定執行與所述本地機的操作系統兼容的被枚舉的應用的版本。20.根據權利要求1所述的方法,其中步驟(d)還包括決定執行與所述本地機的操作系統的修訂級兼容的被枚舉的應用的版本。21.根據權利要求1所述的方法,其中步驟(d)還包括決定執行與由所述本地機上的操作系統指定的語言兼容的被枚舉的應用的版本。22.根據權利要求1所述的方法,其中步驟(d)還包括通過向所接收的信任狀應用策略來做出訪問控制決定。23.根據權利要求1所述的方法,其中步驟(d)還包括響應于對所接收的信任狀的評估選擇所述方法。24.根據權利要求1所述的方法,其中步驟(d)還包括提供響應于對所接收的信任狀的評估而產生的啟動權證,所述啟動權證包括認證信息。25.根據權利要求1所述的方法,其中步驟(d)還包括提供與所述可執行程序相關聯的訪問信息,所述訪問信息包括所述凈皮枚舉的應用的位置的標識,所述標識符合通用命名標準(UNC)。26.根據權利要求1所述的方法,其中步驟(a)還包括如下步驟(a-l)從本地機接收訪問資源的請求;(a-2)由收集代理收集信任狀;以及(a-3)接收所收集的信任狀。27.根據權利要求26所述的方法,其中步驟U-2)還包括通過在所述本地機上執行至少一個腳本來收集信任狀。28.根據權利要求26所述的方法,其中步驟(a-3)還包括響應于所接收的信任狀評估所述本地機。29.根據權利要求26所述的方法,其中步驟(a-3)還包括響應于所收集的信任狀決定對所述被枚舉的應用進行流傳輸。30.根據權利要求26所述的方法,其中步驟(a-3)包括響應于所收集的信任狀對包括所述被枚舉的應用的多個文件之一進行流傳輸。31.—種用于在網絡化計算機系統中在本地對文件元數據的請求做出響應而無需從遠程位置下載文件的方法,所述方法包括(a)從遠程機接收(i)表示所述遠程機存儲的應用程序的目錄結構以及(ii)與包括所存儲應用程序的每個文件相關聯的元數據;(b)存儲所述目錄結構和所述元數據;(c)接收訪問與所述目錄結構中的特定文件相關聯的元數據的至少一個請求;以及(d)利用所存儲的元數據對所述至少一個請求做出響應。32.根據權利要求31所述的方法,還包括如下步驟(e)接收枚舉與本地應用程序相關聯的目錄結構的請求;以及(f)利用所存儲的目錄結構對所述請求做出響應。33.根據權利要求31所述的方法,其中步驟(a)還包括從遠程機接收與包括所存儲的應用程序的每個文件相關聯的元數據,所述元數據包括所述至少一個文件的別名。34.根據權利要求31所述的方法,其中步驟(a)還包括從遠程機接收與包括所存儲的應用程序的每個文件相關聯的元數據,所述元數據包括所述至少一個文件的名稱,所述名稱具有八個字符的長度、點和三個字符的擴展名。35.根據權利要求31所述的方法,其中步驟(b)還包括在隔離環境中存儲所述目錄結構和所述元數據。36.根據權利要求31所述的方法,其中步驟(c)還包括接收確定本地是否有包括所存儲的應用程序的文件拷貝的請求。37.根據權利要求36所述的方法,其中步驟(d)還包括訪問所存儲的元數據并偽裝地表示本地有所述文件的拷貝。38.根據權利要求31所述的方法,其中步驟(d)還包括響應于所接收的元數據滿足Windows操作系統FindFirst操作。39.根據權利要求31所述的方法,其中步驟(d)還包括響應于所接收的元數據滿足Windows操作系統Findnext操作。40.根據權利要求31所述的方法,其中步猓(d)還包括響應于所接收的元數據滿足標識目錄結構中的根節點的操作。41.根據權利要求31所述的方法,其中步驟(d)還包括響應于所接收的元數據滿足標識目錄結構中的節點的操作。42.根據權利要求31所述的方法,其中步驟(d)還包括響應于所接收的元數據滿足標識與目錄結構中的節點相關的訪問時間的操作。43.根據權利要求31所述的方法,其中步驟(d)還包括響應于所接收的元數據滿足標識與目錄結構中的節點相關的修改時間的操作。44.根據權利要求31所述的方法,其中步驟(d)還包括響應于所接收的元數據滿足標識目錄結構中的被修改節點的操作。45.根據權利要求31所述的方法,其中步驟(d)還包括生成枚舉所接收的目錄結構的本地目錄結構的枚舉。46.—種用于在網絡化計算機系統中在本地對文件元數據的請求做出響應而無需從遠程位置下載文件的系統,所述系統包括目錄結構,其標識與至少一個應用程序相關聯的多個文件并包括與所述多個文件中的至少一個相關聯的文件元數據,所述多個文件中的至少一個駐留在遠程機上;存儲所述目錄結構的高速緩沖存儲器元件;以及文件系統過濾器驅動程序,其攔截訪問與該至少一個遠程存儲的文件相關聯的元數據的請求,訪問所述高速緩沖存儲器元件并利用所存儲的目錄結構對所述至少一個請求做出響應。47.根據權利要求46所述的系統,其中所述目錄結構還包括與至少一個應用程序相關聯的多個文件,所述至少一個應用程序駐留在遠程機上。48.根據權利要求46所述的系統,其中所述目錄結構還包括與至少一個應用程序相關聯的多個文件,所述多個文件駐留在遠程機上。49.根據權利要求46所述的系統,其中所述目錄結構還包括與所述多個文件中的至少一個文件相關聯的文件元數據,所述文件元數據包括所述至少一個文件的別名。50.根據權利要求46所述的系統,其中所述目錄結構還包括文件元數據,所述文件元數據包括至少一個文件的名稱,所述名稱具有八個字符的長度、點以及三字符的擴展名。51.根據權利要求46所述的系統,其中所述目錄結構還包括與所述多個文件中的至少一個文件相關聯的文件元數據,所述文件元數據包括用于對Windows操作系統FindFirst請求做出響應的信息。52.根據權利要求46所述的系統,其中所述目錄結構還包括與所述多個文件中的至少一個文件相關聯的文件元數據,所述文件元數據包括用于對Windows操作系統FindNext請求做出響應的信息。53.根據權利要求46所述的系統,其中所述目錄結構還包括與所述多個文件中的至少一個文件相關聯的文件元數據,所述文件元數據包括用于對標識目錄結構中的根節點的請求做出響應的信息。54.根據權利要求46所述的系統,其中所述目錄結構還包括與所述多個文件中的至少一個文件相關聯的文件元數據,所述文件元數據包括用于對標識目錄結構中的節點的請求做出響應的信息。55.根據權利要求46所述的系統,其中所述目錄結構還包括與所述多個文件中的至少一個文件相關聯的文件元數據,所述文件元數據包括用于對標識目錄結構中的被修改節點的請求做出響應的信息。56.根據權利要求46所述的系統,其中所述目錄結構還包括與所述多個文件中的至少一個文件相關聯的文件元數據,所述文件元數據包括用于對標識與目錄結構中的節點相關聯的修改時間的請求做出響應的信息。57.根據權利要求46所述的系統,其中所述目錄結構還包括與所述多個文件中的至少一個文件相關聯的文件元數據,所述文件元數據包括用于對標識與目錄結構中的節點相關聯的訪問時間的請求做出響應的信息。58.根據權利要求46所述的系統,其中所述目錄結構還包括樹形結構,所述樹中的至少一個節點表示與應用程序相關聯的文件。59.根據權利要求46所述的系統,其中所述目錄結構還包括嵌入于至少一個文件中的文件元數據。60.—種用于訪問與應用相關聯的目錄結構中的文件的方法,所述方法包括(a)攔截應用訪問文件的請求;(b)將所述請求重定向到第一隔離環境;(c)確定所述所請求的文件不存在于所述第一隔離環境中;(d)響應于在包括駐留在遠程機上的多個應用文件的目錄結構枚舉中標識該文件的確定,將所述請求重定向到第二隔離環境;以及(e)響應于所述第二隔離環境不包含所述文件且在枚舉中標識該文件的確定,從所述遠程機檢索所請求的文件。61.根據權利要求60所述的方法,其中步驟(a)包括攔截應用訪問可執行文件的請求。62.根據權利要求60所述的方法,其中步驟(a)包括攔截應用訪問文件的請求,在本地機上執行所述應用的一部分。63.根據權利要求60所述的方法,其中步驟(a)還包括攔截能夠接收應用流的應用訪問文件的請求。64.根據權利要求60所述的方法,其中步驟(b)還包括攔截所述應用訪問所述文件的請求,所述應用的至少一部分駐留在所述本地機上的第一隔離環境中。65.根據權利要求60所述的方法,其中步驟(e)還包括從第二遠程機檢索所述所請求的文件。66.根據權利要求60所述的方法,其中步驟(e)還包括通過所述遠程機將所請求的文件流傳輸到所述本地才幾。67.根據權利要求60所述的方法,其中步驟(e)還包括在所述第二隔離環境中存儲所檢索的文件。68.根據權利要求60所述的方法,其中步驟(e)還包括對所檢索的文件加密。69.根據權利要求60所述的方法,其中步驟(e)還包括以加密形式存儲所檢索的文件。70.根據權利要求60所述的方法,還包括如下步驟響應于在所述枚舉中未標識所述文件的確定,將對所述文件的請求重定向到所述第一隔離環境之外和所述第二隔離環境之外的環境。71.根據權利要求60所述的方法,還包括如下步驟(f)攔截在第三隔離環境中執行的另一應用提出的訪問文件的請求;(g)響應于在所述枚舉中枚舉該文件且所述第二隔離環境不包含所述文件的確定,將所述請求重定向到所述第二隔離環境;以及(h)通過所述第二隔離環境向所述另一應用提供對所述文件的訪問。72.根據權利要求71所述的方法,其中步驟(h)還包括在所述第三隔離環境中存儲所述文件。73.—種用于訪問與應用相關聯的目錄結構中的文件的系統,包括笫一隔離環境,應用從所述第一隔離環境執行并請求訪問文件;第二隔離環境,其存儲與安裝在遠程機上的多個應用文件相關聯的目錄結構的枚舉;過濾器驅動程序攔截訪問所述文件的請求;將所述請求重定向到所述第一隔離環境;確定所述所請求的文件不存在于所述第一隔離環境中;響應于在所述目錄結構枚舉中標識該文件的確定將該請求重定向到所述第二隔離環境;以及與所述過濾器驅動程序通信的收發器,所述收發器響應于所述過濾器驅動程序做出的所述第二隔離環境不包含所述文件且在所述枚舉中標識該文件的確定,向遠程機發送所述重定向的請求并響應于所述請求接收包括所請求的文件的流。74.根據權利要求73所述的系統,其中所述收發器還包括在所述第二隔離環境中存儲流傳輸的文件。75.根據權利要求74所述的系統,還包括所述過濾器驅動程序攔截另一應用訪問所述文件的請求,所述過濾器驅動程序將所述請求重定向到所述第二隔離環境。76.根據權利要求73所述的系統,還包括響應于所述收發器在所述笫二隔離環境中存儲流傳輸的文件的確定,所述過濾器驅動程序攔截另一應用訪問所述文件的請求,所述過濾器驅動程序將所述請求重定向到所述第二隔離環境。77.根據權利要求73所述的系統,其中所述第二隔離環境還包括高速緩沖存儲器元件。78.根據權利要求73所述的系統,其中所述第二隔離環境還包括在高速緩沖存儲器元件中存儲所述目錄結構的枚舉。79.根據權利要求73所述的系統,其中所述收發器從所述遠程機接收包括所請求的文件的流。80.根據權利要求73所述的系統,其中所述收發器從第二遠程機接收包括所請求的文件的流。81.—種用于通過本地機訪問包括應用程序的多個文件的方法,所述方法包括(a)通過本地機接收包括訪問信息的文件,所述訪問信息用于訪問多個應用文件并執行能夠接收應用流的第一客戶端;(b)響應于所述文件檢索所述多個應用文件的標識;(c)響應于所述文件檢索執行所述多個應用文件所需的至少一個特征;(d)確定所述本地機是否包括所述至少一個特征;以及(e)響應于所述本地機缺少所述至少一個特征的確定執行第二客戶端,所述第二客戶端請求在遠程機上執行所述多個應用文件。82.根據權利要求81所述的系統,其中步驟(a)還包括接收訪問信息,所述訪問信息包括包含應用程序的多個應用文件的位置的標識。83.根據權利要求81所述的系統,其中步驟(b)還包括檢索多個應用文件的標識,所述多個應用文件包括一個或多個應用程序。84.根據權利要求81所述的系統,其中步驟(b)還包括接收多個可用應用程序的枚舉,所述枚舉是響應于所述訪問信息而產生的。85.根據權利要求81所述的系統,其中步驟(d)還包括評估所述本地機上的操作系統。86.根據權利要求81所述的方法,其中步驟(d)還包括標識所述本地機上的操作系統使用的語言。87.根據權利要求81所述的系統,其中步驟(d)還包括標識所述本地機上的操作系統的修訂級。88.根據權利要求81所述的系統,其中步驟(d)還包括標識駐留在所述本地機上的應用程序的應用版本。89.根據權利要求81所述的系統,其中步驟(d)還包括確定所述本地機是否包括設備驅動程序。90.根據權利要求81所述的方法,其中步驟(d)還包括確定所述本地機是否包括執行所述多個應用文件的許可。91.根據權利要求81所述的方法,其中步驟(e)還包括通過所述第二客戶端接收在所述遠程機上執行所述多個應用文件而產生的應用輸出數據。92.根據權利要求91所述的方法,其中步驟(e)還包括通過所述第二客戶端在所述本地機上顯示所述應用輸出。93.根據權利要求81所述的方法,其中步驟(e)還包括通過所述遠程機執行所述多個應用文件。94.根據權利要求81所述的系統,其中步驟(e)還包括通過所述遠程機接收包括所述多個應用文件的應用流以加以執行。95.根據權利要求81所述的系統,其中步驟(e)包括響應于所述本地機包括所述至少一個特征的確定執行所述第一客戶端,所述第一客戶端從遠程機接收包括所述多個應用文件的應用流以在所述本地機上執行。96.根據權利要求81所述的方法,其中步驟(e)還包括通過表出數據。、、、,;97.根據權利要求96所述的方法,其中步驟(e)還包括通過獨立計算結構表示層協議或遠程桌面Windows表示層協議或X-Windows表示層協議接收應用輸出數據。98.—種用于訪問包括應用程序的多個文件的系統,所述系統包括包括訪問信息的文件,所述訪問信息用于訪問多個應用文件;能夠接收應用流的第一客戶端,所述第一客戶端接收所述文件、需的至少一個特征,并確定所述本地機是否包括所述至少一個特征;以及第二客戶端,其響應于所述第一客戶端做出的所述本地機缺少所述至少一個特征的確定請求在遠程機上執行所述多個應用文件。99.根據權利要求98所述的系統,其中所述文件還包括訪問信息,所述訪問信息包括包含應用程序的多個應用文件的位置的標識。全文摘要一種用于在預定數量的應用程序執行方法之間進行選擇的方法,所述方法包括響應于所接收的與本地機相關的信任狀提供本地機可用的多個應用的枚舉。響應于策略選擇執行被枚舉的應用的預定數量的方法之一,所述預定數量的方法包括用于所述被枚舉的應用的應用流傳輸的方法。無須從遠程位置下載文件即可滿足對文件元數據的請求。可以訪問與應用程序相關聯的目錄結構中的文件。本地機可以訪問包括應用程序的多個文件。文檔編號G06F9/445GK101326491SQ200680045934公開日2008年12月17日申請日期2006年9月28日優先權日2005年10月7日發明者A·S·古亞拉蒂,B·J·彼得森,D·R·霍伊,J·H·諾爾德,T·N·特雷德申請人:茨特里克斯系統公司