Поделиться через


Запуск локально установленного приложения в виртуальной среде с виртуализированными приложениями

Область применения: Windows 7 с пакетом обновления 1 (SP1), Windows 10, Windows 11, Windows Server 2012 R2, Windows Server 2016

Вы можете запустить локально установленное приложение в виртуальной среде вместе с приложениями, которые были виртуализированы с помощью Microsoft Application Virtualization (App-V). Вы можете выполнить эту задачу, если:

  • Требуется установить и запустить приложение локально на клиентских компьютерах, но требуется виртуализировать и запустить определенные подключаемые модули, которые работают с этим локальным приложением.

  • Выполните устранение неполадок с клиентским пакетом App-V и хотите открыть локальное приложение в виртуальной среде App-V.

Каждый метод выполняет практически одну и ту же задачу, но некоторые методы могут быть лучше подходят для некоторых приложений, чем для других, в зависимости от того, запущено ли уже виртуализированное приложение.

Раздел реестра RunVirtual

Чтобы добавить локально установленное приложение в пакет или в виртуальную среду группы подключений, добавьте подраздел RunVirtual в раздел реестра в редакторе реестра, как описано в следующих разделах.

Параметр групповой политики для управления этим разделом реестра недоступен. Поэтому необходимо использовать Microsoft Intune или Configuration Manager, другую систему электронного распространения программного обеспечения (ESD) или вручную изменить реестр.

Начиная с App-V 5.0 с пакетом обновления 3 (SP3), при использовании RunVirtual пакеты можно публиковать глобально или для пользователя.

Действия по созданию подраздела

  1. Используя сведения, приведенные в следующей таблице, создайте новый раздел реестра, используя имя исполняемого файла, например 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. Но должны быть выполнены все следующие условия:

  • Если вы хотите включить несколько пакетов в виртуальную среду, необходимо включить их в группу подключений с включенной поддержкой.

  • Создайте только один подраздел для одного из пакетов в группе подключений. Например, у вас есть один пакет, опубликованный глобально, и другой пакет, опубликованный пользователю. Вы создаете подраздел для любого из этих пакетов, но не для обоих. Хотя вы создаете подраздел только для одного из пакетов, все пакеты в группе подключений, а также локальное приложение будут доступны в виртуальной среде.

  • Ключ, с помощью которого создается подраздел, должен соответствовать методу публикации, который использовался для пакета.

    Например, если вы опубликовали пакет для пользователя, необходимо создать подраздел в разделе HKEY_CURRENT_USER\SOFTWARE\Microsoft\AppV\Client\RunVirtual. Не добавляйте ключ для одного приложения в обоих кустах.

  1. Задайте для нового подраздела реестра значение 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

Командлет Windows PowerShell Get-AppvClientPackage

С помощью командлета Start-AppVVirtualProcess можно получить имя пакета, а затем запустить процесс в виртуальной среде указанного пакета. Этот метод позволяет запускать любую команду в контексте пакета App-V независимо от того, выполняется ли пакет в данный момент.

Используйте следующий пример синтаксиса и замените имя пакета на <Package>:

$AppVName = Get-AppvClientPackage <Package>

Start-AppvVirtualProcess -AppvClientObject $AppVName cmd.exe

Если вы не знаете точное имя пакета, можно использовать командную строку Get-AppvClientPackage YourExecutable, где YourExecutable — это имя приложения. Например, введите Get-AppvClientPackage Word.

Параметр командной строки /appvpid:<PID>

Переключатель можно применить /appvpid:<PID> к любой команде, которая позволяет этой команде выполняться в выбранном виртуальном процессе, указав его идентификатор процесса (PID). При использовании этого метода запускается новый исполняемый файл в той же среде App-V, что и исполняемый файл, который уже запущен.

Пример: cmd.exe /appvpid:8108

Чтобы найти идентификатор процесса (PID) процесса App-V, выполните команду 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 . Сцепить параметр /appvve со следующим кодом:

  • Двоеточие

  • Идентификатор GUID пакета нужного пакета

  • Символ подчеркивания

  • Идентификатор версии нужного пакета

Если вы не знаете точное имя пакета, используйте командную строку Get-AppvClientPackage YourExecutable, где YourExecutable — это имя приложения. Например, введите Get-AppvClientPackage Word.

Этот метод позволяет запускать любую команду в контексте пакета App-V независимо от того, выполняется ли пакет в данный момент.