在虚拟环境中使应用程序与Windows 7兼容(5) |
发布时间: 2012/6/30 11:40:37 |
使用集中管理的单个填充程序数据库来填充 App-V 应用程序
从策略角度看,要部署集中管理的单个填充程序数据库并由使用 App-V 进行排序的应用程序选择该数据库,您必须做什么?很简单,按常规方法安装即可!使用 App-V 安装的应用程序的启动方式与应用程序的常规启动方式大致相同,这种应用程序使用应用了填充程序的加载程序机制。它们只是通过代理进程来启动。具体地说,sfttray.exe(而不是资源管理器)负责启动新的进程。因此,进程树如图 3 所示。 图 3 代理进程树 应用程序启动时,它像任何其他应用程序一样运行加载程序。Microsoft Application Virtualization 客户端接口层 (sftintf.dll) 调用 CreateProcessW,后者调用内部的 API CreateProcessInternalW。填充程序引擎是在 CreateProcessInternalW API 中调用的,填充程序与该进程绑定。 那么,这就相当容易了。还有什么问题吗?是的,有一个。它不能很好地处理提升。例如,您不能简单地要求对某个应用程序进行提升(使用 RunAsAdmin 填充程序),也不能对需要使用 ElevateCreateProcess 进行提升的应用程序的问题进行修复。为什么呢?原因是气泡图。 例如,我们来看一个尝试自行启动一次自动更新的应用程序(遗憾的是,这是一个十分常见的任务)。在以本机方式运行时,它产生了一个问题,即它使用了无法调用提升的 CreateProcess API。它随后返回错误 -1073740756 – STATUS_ELEVATION_REQUIRED。ElevateCreateProcess 填充程序捕获这个返回值,然后调用应用程序信息服务来提供提升。但该服务无法找到要提升的应用程序,因为该服务位于气泡图之外! 因此,只要应用程序不需要提升,在已创建一个进程的情况下,部署单个填充程序数据库解决方案就十分容易,您只需继续做相同的事情。 本文出自:亿恩科技【www.enkj.com】 |