使用虚拟化应用程序在虚拟环境内部运行本地安装的应用程序
可以在虚拟环境中运行本地安装的应用程序,以及使用 Microsoft Application Virtualization (App-V) 进行虚拟化的应用程序。 如果执行以下操作,则可能想要执行此操作:
想要在客户端计算机上本地安装和运行应用程序,但想要虚拟化并运行与该本地应用程序配合使用的特定插件。
对 App-V 客户端包进行故障排除,并希望在 App-V 虚拟环境中打开本地应用程序。
使用以下任一方法在 App-V 虚拟环境中打开本地应用程序:
每个方法基本上完成相同的任务,但某些方法可能比其他方法更适合某些应用程序,具体取决于虚拟化应用程序是否已在运行。
RunVirtual 注册表项
若要将本地安装的应用程序添加到包或连接组的虚拟环境,请将子项添加到 RunVirtual
注册表编辑器中的注册表项,如以下部分所述。
没有可用于管理此注册表项的组策略设置,因此必须使用 System Center Configuration Manager 或其他电子软件分发 (ESD) 系统,或手动编辑注册表。
使用 RunVirtual 时支持发布包的方法
App-V 版本 | 支持的发布方法 |
---|---|
App-V 5.0 SP3 |
全局发布或用户 |
App-V 5.0 到 App-V 5.0 SP2 |
仅在全球发布 |
创建子项的步骤
使用下表中的信息,使用可执行文件的名称(例如, MyApp.exe)创建新的注册表项。
包发布方法 在何处创建注册表项 全局发布
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\AppV\Client\RunVirtual
示例:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\AppV\Client\RunVirtual\MyApp.exe
发布到用户
HKEY_CURRENT_USER\SOFTWARE\Microsoft\AppV\Client\RunVirtual
示例:HKEY_CURRENT_USER \SOFTWARE\Microsoft\AppV\Client\RunVirtual\MyApp.exe
连接组可以包含:
仅全局发布或仅发布给用户的包
全局发布并发布给用户的包
HKEY_LOCAL_MACHINE或HKEY_CURRENT_USER键,但以下所有内容都必须为 true:
如果要在虚拟环境中包含多个包,则必须将其包含在已启用的连接组中。
仅为连接组中的一个包创建一个子项。 例如,如果有一个程序包全局发布,另一个包已发布给用户,则为其中任一个包创建子项,但不能同时为这两个包创建子项。 尽管只为其中一个包创建子项,但连接组中的所有包以及本地应用程序都可在虚拟环境中使用。
创建子项的密钥必须与用于包的发布方法匹配。
例如,如果将包发布给用户,则必须在下面
HKEY_CURRENT_USER\SOFTWARE\Microsoft\AppV\Client\RunVirtual
创建子项。
将新的注册表子项的值设置为包的 PackageId 和 VersionId,用下划线分隔值。
语法: <PackageId>_<VersionId>
示例:4c909996-afc9-4352-b606-0b74542a09c1_be463724-Oct1-48f1-8604-c4bd7ca92fa
上一示例中的应用程序将生成注册表导出文件 (.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-555555555
Get-AppvClientPackage PowerShell cmdlet
可以使用 Start-AppVVirtualProcess cmdlet 检索包名称,然后在指定包的虚拟环境中启动进程。 此方法允许在 App-V 包的上下文中启动任何命令,而不考虑包当前是否正在运行。
使用以下示例语法,并将包的名称替换为 <包>:
$AppVName = Get-AppvClientPackage <Package>
Start-AppvVirtualProcess -AppvClientObject $AppVName cmd.exe
如果不知道包的确切名称,可以使用命令行 Get-AppvClientPackage *executable\,其中 *executable 是应用程序的名称,例如:Get-AppvClientPackage *Word*。
命令行开关 /appvpid:<PID>
可以将 /appvpid:<PID> 开关应用到任何命令,使该命令能够通过指定其进程 ID (PID) 在所选的虚拟进程中运行。 使用此方法会在已运行的可执行文件所在的同一 App-V 环境中启动新的可执行文件。
示例:cmd.exe /appvpid:8108
若要查找 App-V 进程的进程 ID (PID) ,请从提升的命令提示 符运行命令tasklist.exe 。
命令行挂钩开关 /appvve:<GUID>
此开关允许你在 App-V 包的虚拟环境中运行本地命令。 与 /appvid 交换机(其中必须已运行虚拟环境)不同,此交换机使你能够启动虚拟环境。
语法: cmd.exe /appvve:<PACKAGEGUID_VERSIONGUID>
示例:cmd.exe /appvve:aaaaaaaa-bbbb-cccc-dddd-eeeeeeee_11111111-2222-3333-4444-55555555
若要获取应用程序的包 GUID 和版本 GUID,请运行 Get-AppvClientPackage cmdlet。 使用以下内容连接 /appvve 开关:
冒号
所需包的包 GUID
下划线
所需包的版本 ID
如果不知道包的确切名称,请使用命令行 Get-AppvClientPackage *executable\,其中 *executable 是应用程序的名称,例如:Get-AppvClientPackage *Word*。
此方法允许在 App-V 包的上下文中启动任何命令,而不考虑包当前是否正在运行。