在虛擬環(huán)境中使應(yīng)用程序與Windows 7兼容(5) |
發(fā)布時(shí)間: 2012/6/30 11:40:37 |
使用集中管理的單個(gè)填充程序數(shù)據(jù)庫來填充 App-V 應(yīng)用程序
從策略角度看,要部署集中管理的單個(gè)填充程序數(shù)據(jù)庫并由使用 App-V 進(jìn)行排序的應(yīng)用程序選擇該數(shù)據(jù)庫,您必須做什么?很簡單,按常規(guī)方法安裝即可!使用 App-V 安裝的應(yīng)用程序的啟動(dòng)方式與應(yīng)用程序的常規(guī)啟動(dòng)方式大致相同,這種應(yīng)用程序使用應(yīng)用了填充程序的加載程序機(jī)制。它們只是通過代理進(jìn)程來啟動(dòng)。具體地說,sfttray.exe(而不是資源管理器)負(fù)責(zé)啟動(dòng)新的進(jìn)程。因此,進(jìn)程樹如圖 3 所示。 圖 3 代理進(jìn)程樹 應(yīng)用程序啟動(dòng)時(shí),它像任何其他應(yīng)用程序一樣運(yùn)行加載程序。Microsoft Application Virtualization 客戶端接口層 (sftintf.dll) 調(diào)用 CreateProcessW,后者調(diào)用內(nèi)部的 API CreateProcessInternalW。填充程序引擎是在 CreateProcessInternalW API 中調(diào)用的,填充程序與該進(jìn)程綁定。 那么,這就相當(dāng)容易了。還有什么問題嗎?是的,有一個(gè)。它不能很好地處理提升。例如,您不能簡單地要求對某個(gè)應(yīng)用程序進(jìn)行提升(使用 RunAsAdmin 填充程序),也不能對需要使用 ElevateCreateProcess 進(jìn)行提升的應(yīng)用程序的問題進(jìn)行修復(fù)。為什么呢?原因是氣泡圖。 例如,我們來看一個(gè)嘗試自行啟動(dòng)一次自動(dòng)更新的應(yīng)用程序(遺憾的是,這是一個(gè)十分常見的任務(wù))。在以本機(jī)方式運(yùn)行時(shí),它產(chǎn)生了一個(gè)問題,即它使用了無法調(diào)用提升的 CreateProcess API。它隨后返回錯(cuò)誤 -1073740756 – STATUS_ELEVATION_REQUIRED。ElevateCreateProcess 填充程序捕獲這個(gè)返回值,然后調(diào)用應(yīng)用程序信息服務(wù)來提供提升。但該服務(wù)無法找到要提升的應(yīng)用程序,因?yàn)樵摲⻊?wù)位于氣泡圖之外! 因此,只要應(yīng)用程序不需要提升,在已創(chuàng)建一個(gè)進(jìn)程的情況下,部署單個(gè)填充程序數(shù)據(jù)庫解決方案就十分容易,您只需繼續(xù)做相同的事情。 本文出自:億恩科技【mszdt.com】 服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |