本文介绍如何在 Microsoft Application Virtualization 5.0 客户端(App-V 5.0)虚拟化环境中启动进程。
适用于: Windows 7 Service Pack 1原始 KB 数: 2848278
总结
App-V 5.0 的常见故障排除任务是通过在 App-V 应用程序的上下文中打开进程来调查或修改本地包。 这也称为“在 App-V 气泡中打开进程”。 App-V 5.0 提供了多种替代方法来执行此任务,这些方法与以前版本的产品中提供的技术有很大不同。 下面详述的每个方法基本上都完成了相同的任务,但某些方法可能更适合某些应用程序,具体取决于虚拟化应用程序是否已运行。
PowerShell cmdlet:Get-AppvClientPackage
可以使用 Start-AppVVirtualProcess cmdlet 检索包名称,然后在指定的包的虚拟环境中启动进程(将包的名称替换为 <包>):
$AppVName = Get-AppvClientPackage <Package>
Start-AppvVirtualProcess -AppvClientObject $AppVName cmd.exe
如果不知道包的确切名称,则可以使用命令行Get-AppvClientPackage executable,将应用程序的名称替换为“可执行文件”;例如: Get-AppvClientPackage Word
此方法允许在 App-V 包的上下文中启动任何命令,无论包当前是否正在运行。 这类似于在 App-V 4.6 中使用 sfttray /exe cmd.exe /launch "App-V Application" 语法。
命令行开关“/appvpid:<PID>”
这样,就可以将 /appvpid 开关应用到任何命令,该命令可在由其 PID (进程 ID) 选择的虚拟进程(进程 ID)的虚拟进程中运行,如以下示例所示:
cmd.exe /appvpid:8108
若要获取 App-V 进程的进程 ID(PID),请使用提升的命令提示符tasklist.exe命令并获取进程的 PID。 此方法的优点是,在已运行的可执行文件所在的同一 App-V 环境中启动新可执行文件。
命令行挂钩开关“/appvve:<GUID>”
如果 /appvpid 交换机要求虚拟进程正在运行,此开关允许启动本地命令,并允许它在 App-V 包的虚拟环境中运行,并将初始化它。 语法为 cmd.exe /appvve: <PACKAGEGUID_VERSIONGUID>。
例如:
cmd.exe /appvve: aaaaaaaa-bbbb-cccc-dddd-eeeeeeee_11111111-2222-3333-4444-55555555
若要获取应用程序的包 GUID 和版本 GUID,请运行 Get-AppvClientPackage cmdlet,然后将包 GUID 和版本 GUID 与它们之间的下划线连接起来。 例如:
PS C:\> Get-AppvClientPackage
输出:
PackageId:aaaaaaaa-bbbb-cccc-dddd-eeeeeeee VersionId:11111111-2222-3333-4444-5555555555 名称:MyApp 1.10
输出将生成命令行: cmd.exe /appvve:aaaaaaaa-bbbb-cccc-dddd-eeeeeeee_11111111-2222-3333-4444-55555555
运行虚拟功能
如果在 RDS 环境中工作,并且具有全局发布的包,还可以利用“运行虚拟”功能。 为此,请将进程可执行文件名称添加为以下键的子项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\AppV\Client\RunVirtual
例如,如果你有一个名为MyApp.exe的本地安装应用程序,并希望此应用程序在虚拟环境中运行,请创建一个名为MyApp.exe的子项。 编辑(默认值)REG_SZ值,该值包含包 GUID 和版本 GUID,用下划线分隔(例如 <GUID>_<GUID>)。
例如,上一示例中列出的应用程序将生成注册表导出(.reg文件),如下所示:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\AppV\Client\RunVirtual]
@=""
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\AppV\Client\RunVirtual\MyApp.exe]
@="aaaaaaaa-bbbb-cccc-dddd-eeeeeeee_11111111-2222-3333-4444-55555555"
需要在本地运行的每个本机进程都需要在其自己的子项下运行虚拟密钥。 只要系统上有一个版本的 EXE,在默认键值中放置 package\version GUID 组合就足够了。
还可以以类似的格式指定全局发布的连接组的 AppConnectionGroupID 和 VersionID。 在连接组中指定主可执行文件名称。 例如,如果连接组 XML 如下所示:
<?xml version="1.0" ?>
<appv:AppConnectionGroup xmlns="http://schemas.microsoft.com/appv/2010/virtualapplicationconnectiongroup" xmlns:appv="http://schemas.microsoft.com/appv/2010/virtualapplicationconnectiongroup" AppConnectionGroupId="CCCCCCCC-CCCC-CCCC-CCCC-CCCCCCCCCC" VersionId="33333333-3333-3333-3333-3333333333" Priority="0" DisplayName="MyApp Connection Group">
然后添加如下所示的注册表项:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\AppV\Client\RunVirtual]
@=""
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\AppV\Client\RunVirtual\MyApp.exe]
@="aaaaaaaa-bbbb-cccc-dddd-eeeeeeee_11111111-2222-3333-4444-555555555