应用附加使你能够将应用程序包中的应用程序动态附加到 Azure 虚拟桌面中的用户会话。 应用程序不会本地安装在会话主机或映像上,因此可以为会话主机创建较少的自定义映像,并降低组织的运营开销和成本。 使用应用附加传送应用程序还可以更好地控制用户可在远程会话中访问的应用程序。
本文介绍如何使用 Azure 门户和 Azure PowerShell 在 Azure 虚拟桌面中使用应用附加添加和管理应用程序。 无法使用 Azure CLI 添加或管理应用附加应用程序。 在开始之前,请确保阅读 Azure 虚拟桌面 App Attach 的概述。
若要在 Azure 虚拟桌面中使用应用附加,需要满足以下条件:
包含会话主机 的现有主机池 、应用程序组和工作区 。
会话主机需要运行支持的 Windows 客户端操作系统 ,并且至少有一台主机已开机。 不支持 Windows Server。
会话主机需要加入 Microsoft Entra ID 或 Active Directory 域服务 (AD DS) 域。
位于与会话主机相同 Azure 区域的 SMB 文件共享。 主机池中所有会话主机的计算机帐户都必须具有读取访问权限 。 此文件共享用于存储应用程序映像。 有关文件共享的要求的详细信息,请参阅文件共享 。
若要在会话主机加入 Microsoft Entra ID 时使用 Azure 文件存储,需要将读取者和数据访问 Azure 基于角色的访问控制 (RBAC) 角色分配给“Azure 虚拟桌面”和“Azure 虚拟桌面 ARM 提供程序”服务主体。 此 RBAC 角色分配允许会话主机使用访问密钥或 Microsoft Entra 访问存储帐户。 存储帐户必须与用于会话主机的 VM 位于同一订阅中。
若要了解如何将 Azure RBAC 角色分配给 Azure 虚拟桌面服务主体,请参阅将 RBAC 角色分配给 Azure 虚拟桌面服务主体 。 在未来的更新中,您将不需要分配Azure 虚拟桌面 ARM 提供程序 服务主体。
从应用程序包或 App-V 包创建并存储在文件共享上的 MSIX 或 Appx 磁盘映像。 有关详细信息,请参阅创建映像 ,也可以在其中下载预生成的 MSIX 包进行测试。 如果使用 App-V,请参阅创建和管理 App-V 虚拟化应用程序 。
若要添加 MSIX 映像,至少需要为资源组分配桌面虚拟化参与者 Azure 基于角色的访问控制 (RBAC) 角色。 若要将用户分配到应用程序组,还需要应用程序组的 Microsoft.Authorization/roleAssignments/write
权限。 包含此权限的内置 RBAC 角色是“用户访问管理员 ”和“所有者 ”。
如果要在本地使用 Azure PowerShell,请参阅将 Azure PowerShell 与 Azure 虚拟桌面配合使用 ,确保已安装 Az.DesktopVirtualization 和 Microsoft Graph PowerShell 模块。
需要使用 Az.DesktopVirtualization PowerShell 模块的版本 4.2.1 或更高版本,该模块包含支持应用附加的 cmdlet。 可以从 PowerShell 库 下载并安装 Az.DesktopVirtualization PowerShell 模块。
重要
所有 MSIX 和 Appx 应用程序包都包含证书。 你负责确保证书在环境中受信任。 相应的信任链支持自签名证书。
注意
此问题当前会影响 Windows 11 版本 24H2 的 CimFS 映像,从而阻止装载映像。 我们正在积极制定一个修复方案,预计将在 2025 年 6 月推出。 解决方法是改用 VHDX 映像,或使用 24H2 之前的 Windows 11 版本。
要在 MSIX 映像、Appx 映像或 App-V 包中作为应用附加包将应用程序添加到 Azure 虚拟桌面,请选择适合您方案的相关选项卡,并按照步骤操作。
下面介绍如何使用 Azure 门户将 MSIX 映像、Appx 映像或 App-V 包添加为应用附加包:
登录到 Azure 门户 。
在搜索栏中,键入“Azure 虚拟桌面 ”,然后选择匹配的服务条目以转到 Azure 虚拟桌面概述。
选择 “应用附加 ”,然后选择“ + 创建 ”。
在“基本信息”选项卡上,完成以下信息:
展开表
参数
说明
订阅
从下拉列表中选择要将 MSIX 映像、Appx 映像或 App-V 包添加到其中的订阅。
资源组
选择现有资源组或选择“新建 ”并输入名称。
主机池
从下拉列表中选择一个现有主机池。
位置
选择应用附加包的 Azure 区域。
完成此选项卡后,请选择“下一步”。
在“映像路径”选项卡上,填写以下信息 :
展开表
参数
说明
映像路径
如果映像存储在 Azure 文件存储中,请选择“从存储帐户中选择”,或者选择“输入 UNC”以指定 UNC 路径 。 后续字段取决于所选的选项。
从存储帐户中选择
存储帐户
选择映像所在的存储帐户。
文件共享
选择“选择文件”,然后浏览到映像所在的文件共享和目录 。 选中要添加的映像旁边的框,例如 MyApp.cim
,然后选择“选择” 。
MSIX 包
从映像中选择 MSIX 或 Appx 包。
输入 UNC
北卡罗来纳大学
输入映像文件的 UNC 路径。
MSIX 包
从映像中选择 MSIX 或 Appx 包。
任一选项
显示名称
为应用程序输入一个易记名称。
版本
检查是否显示了预期的版本号。
登记类型
选择要使用的注册类型 。
状态
选择包的初始状态 。
失败时的运行状况检查状态
如果包无法在会话主机上暂存,请选择包的状态。 针对会话主机运行状况检查状态 的 AppAttachHealthCheck 报告此状态。
完成此选项卡后,请选择“下一步”。
提示
填写此选项卡后,可以继续选择将应用程序分配给主机池、用户和组。 或者,如果要单独配置分配,请选择“ 查看 + 创建 ”,然后转到 “分配应用附加包 ”。
可选:在“分配”选项卡上,填写以下信息 :
对于“主机池”,选择要向其分配应用程序的主机池 。
选择“添加用户或用户组”,然后搜索并选择要向其分配应用程序的用户或组 。 完成后,选择“选择” 。
查看添加的分配,然后选择“下一步” 。
可选:在“标记”选项卡上,可以输入所需的任何名称/值对,然后选择“查看 + 创建” 。
在“查看 + 创建”选项卡上,确保验证通过并查看在部署期间使用的信息,然后选择“创建”以添加应用程序 。
下面介绍如何使用 Az.DesktopVirtualization PowerShell 模块将 MSIX 映像、Appx 映像或 App-V 包添加为应用附加包。 请务必将 <placeholder>
值更改为你自己的值。
在本地设备上运行 PowerShell。
在预览期间,通过运行以下命令检查是否有可用的 PowerShell cmdlet:
Import-Module Az.DesktopVirtualization
Get-Command -Module Az.DesktopVirtualization -Noun "*AppAttach*"
输出应类似于以下输出:
CommandType Name Version Source
----------- ---- ------- ------
Function Get-AzWvdAppAttachPackage 4.2.1 Az.DesktopVirtualization
Function Import-AzWvdAppAttachPackageInfo 4.2.1 Az.DesktopVirtualization
Function New-AzWvdAppAttachPackage 4.2.1 Az.DesktopVirtualization
Function Remove-AzWvdAppAttachPackage 4.2.1 Az.DesktopVirtualization
Function Update-AzWvdAppAttachPackage 4.2.1 Az.DesktopVirtualization
运行以下命令,获取要添加的 MSIX 映像、Appx 映像或 App-V 包中的应用程序的属性,并将其存储在变量中。 需要指定主机池,但它可以是会话主机有权访问文件共享的任何主机池。
# Get the properties of the MSIX image, Appx image, or App-V package
$parameters = @{
HostPoolName = '<HostPoolName>'
ResourceGroupName = '<ResourceGroupName>'
Path = '<UNCPathToFile>'
}
$app = Import-AzWvdAppAttachPackageInfo @parameters
运行以下命令,检查应用程序属性中是否只有一个对象:
$app | FL *
可选 :如果输出中有多个对象,例如同一应用程序的 x64 和 x86 版本,则可以通过运行以下命令,使用参数 PackageFullName
指定要添加的应用程序:
# Specify the package full name
$packageFullName = '<PackageFullName>'
# Get the properties of the application
$parameters = @{
HostPoolName = '<HostPoolName>'
ResourceGroupName = '<ResourceGroupName>'
Path = '<UNCPathToFile>'
}
$app = Import-AzWvdAppAttachPackageInfo @parameters | ? ImagePackageFullName -like *$packageFullName*
运行以下命令,将映像或包添加为应用附加包。 在此示例中,应用程序状态 标记为“活动”,应用程序注册 设置为“按需”,失败时的会话主机运行状况检查状态 设置为“NeedsAssistance” :
$parameters = @{
Name = '<AppName>'
ResourceGroupName = '<ResourceGroupName>'
Location = '<AzureRegion>'
FailHealthCheckOnStagingFailure = 'NeedsAssistance'
ImageIsRegularRegistration = $false
ImageDisplayName = '<AppDisplayName>'
ImageIsActive = $true
}
New-AzWvdAppAttachPackage -AppAttachPackage $app @parameters
成功添加包时,没有输出。
可以通过运行以下命令来验证是否已添加包:
$parameters = @{
Name = '<AppName>'
ResourceGroupName = '<ResourceGroupName>'
}
Get-AzWvdAppAttachPackage @parameters | FL Name, ImagePackageApplication, ImagePackageFamilyName, ImagePath, ImageVersion, ImageIsActive, ImageIsRegularRegistration, SystemDataCreatedAt
输出应如以下示例所示:
Name : My App
ImagePackageApplication : {MyApp}
ImagePackageFamilyName : MyApp_abcdef123ghij
ImagePath : \\fileshare\Apps\MyApp\MyApp.cim
ImageVersion : 1.0.0.0
ImageIsActive : True
ImageIsRegularRegistration : True
SystemDataCreatedAt : 7/31/2023 3:03:43 PM
需要将应用附加包分配给主机池以及组和用户。 选择你的方案对应的相关选项卡并按照步骤操作。
备注
用户帐户需要是混合帐户(在 AD DS 中创建并同步到 Azure AD),但组不需要。
下面介绍如何使用 Azure 门户将应用程序包分配给主机池、用户和组:
从 Azure 虚拟桌面概述中,选择 “应用附加 ”,然后选择要分配的应用附加包的名称。
在“管理”部分中,选择“主机池” :
选择“+ 分配”,然后从下拉列表中选择一个或多个主机池 。 确保主机池中所有会话主机的计算机帐户都必须具有读取访问权限 。
选择 添加 。
从 Azure 虚拟桌面概述中,选择 “应用附加 ”,然后选择要分配的应用附加包的名称。
在“管理”部分中,选择“用户” :
选择“+添加”,然后从列表中选择一个或多个组和/或用户 。
选择“选择” 。
下面介绍如何使用 Az.DesktopVirtualization PowerShell 模块将应用程序包分配给主机池以及组和用户。
重要
每次指定的主机池 ID 都将覆盖任何现有分配。 如果要在主机池的现有列表中添加或移除主机池,需要指定要向其分配应用程序的所有主机池。
在同一 PowerShell 会话中,通过运行以下命令获取要向其分配应用程序的主机池的资源 ID 并将其添加到数组:
# Add a comma-separated list of host pools names
$hostPoolNames = "<HostPoolName1>","<HostPoolName2>"
# Create an array and add the resource ID for each host pool
$hostPoolIds = @()
foreach ($hostPoolName in $HostPoolNames) {
$hostPoolIds += (Get-AzWvdHostPool | ? Name -eq $hostPoolName).Id
}
获得主机池的资源 ID 后,可以通过运行以下命令将应用程序包分配给它们:
$parameters = @{
Name = '<AppName>'
ResourceGroupName = '<ResourceGroupName>'
Location = '<AzureRegion>'
HostPoolReference = $hostPoolIds
}
Update-AzWvdAppAttachPackage @parameters
若要从所有主机池取消分配应用程序包,可以通过运行以下命令传递主机池的空数组:
$parameters = @{
Name = '<AppName>'
ResourceGroupName = '<ResourceGroupName>'
Location = '<AzureRegion>'
HostPoolReference = @()
}
Update-AzWvdAppAttachPackage @parameters
下面介绍如何使用 Az.DesktopVirtualization PowerShell 模块将应用程序分配给组和用户。
获取要在应用程序中添加或移除的组或用户的对象 ID,并使用以下示例之一将其添加到数组中。 建议将应用程序分配给组。
通过运行以下命令,获取一个或多个组的对象ID,并将其添加到数组中。 此示例使用组显示名称:
# Add a comma-separated list of group names
$groups = "Group1","Group2"
# Connect to Microsoft Graph
Connect-MgGraph -Scopes 'Group.Read.All'
# Create an array and add the ID for each group
$Ids = @()
foreach ($group in $groups) {
$Ids += (Get-MgGroup | ? DisplayName -eq $group).Id
}
运行以下命令,获取用户的对象 ID,并将其添加到数组。 此示例使用用户主体名称 (UPN):
# Add a comma-separated list of user principal names
$users = "user1@contoso.com","user2@contoso.com"
# Connect to Azure AD
Connect-MgGraph -Scopes 'User.Read.All'
# Create an array and add the ID for each user
$userIds = @()
foreach ($user in $users) {
$userIds += (Get-MgUser | ? UserPrincipalName -eq $user).Id
}
拥有用户或组的对象 ID 后,可以使用以下示例之一将其添加到应用程序或将其从应用程序中移除,从而分配桌面虚拟化用户 RBAC 角色。
若要将组或用户添加到应用程序,请运行以下命令:
$parameters = @{
Name = '<AppName>'
ResourceGroupName = '<ResourceGroupName>'
}
$appAttachPackage = Get-AzWvdAppAttachPackage @parameters
foreach ($userId in $userIds) {
New-AzRoleAssignment -ObjectId $userId -RoleDefinitionName "Desktop Virtualization User" -Scope $appAttachPackage.Id
}
若要从应用程序中移除组或用户,请运行以下命令:
$parameters = @{
Name = '<AppName>'
ResourceGroupName = '<ResourceGroupName>'
}
$appAttachPackage = Get-AzWvdAppAttachPackage @parameters
foreach ($userId in $userIds) {
Remove-AzRoleAssignment -ObjectId $userId -RoleDefinitionName "Desktop Virtualization User" -Scope $appAttachPackage.Id
}
可以通过更改 MSIX 和 Appx 包的注册类型 和状态 来管理 MSIX 和 Appx 包。 选择你的方案对应的相关选项卡并按照步骤操作。
下面介绍如何使用 Azure 门户更改包的注册类型和状态:
在 Azure 虚拟桌面概述中,选择 “应用附加 ”。 应会在主机池中看到所有现有包的列表。
选择要更改的包的名称。
若要更改注册类型,请选择“按需”或“在登录时注册”,然后选择“保存” 。
若要更改状态,请选择“非活动”或“活动”,然后选择“保存” 。
下面介绍如何使用 Az.DesktopVirtualization PowerShell 模块更改包的注册类型和状态。
在同一 PowerShell 会话中,可以通过运行以下命令来更改注册类型和状态:
通过运行以下命令更改注册类型。 将 IsRegularRegistration
设置为 $true
(对于“在登录时注册” )或 $false
(对于“按需” )。
$parameters = @{
Name = '<Name>'
ResourceGroupName = '<ResourceGroupName>'
Location = '<AzureRegion>'
IsRegularRegistration = $true
}
Update-AzWvdAppAttachPackage @parameters
通过运行以下命令更改状态。 将 IsActive
设置为 $true
表示 活动 ,或设置为 $false
表示 非活动 。
$parameters = @{
Name = '<Name>'
ResourceGroupName = '<ResourceGroupName>'
Location = '<AzureRegion>'
IsActive = $true
}
Update-AzWvdAppAttachPackage @parameters
使用 RemoteApp 应用程序组发布 MSIX 或 Appx 应用程序
可以通过使用 RemoteApp 应用程序组发布 MSIX 和 Appx 应用程序来向用户提供这些应用程序。 使用应用附加时,无需将应用程序添加到桌面应用程序组,因为只需 分配应用附加包 。 必须将要发布的应用程序分配给主机池。
下面介绍如何使用 Azure 门户将应用程序从本文添加的包中添加到 RemoteApp 应用程序组:
从 Azure 虚拟桌面概述中,选择“应用程序组” ,然后选择要向其添加应用程序的 RemoteApp 应用程序组。
选择“应用程序” ,然后选择“+ 添加” 。 确保应用程序组分配到的主机池中至少有一台会话主机已开机。
在“基本信息”选项卡上,完成以下信息:
展开表
参数
数值/描述
应用程序源
从下拉列表中选择“应用附加” 。 如果要从“开始”菜单或通过指定文件路径添加应用程序,请参阅 使用 RemoteApp 发布应用程序 。
包
从下拉列表中选择可用于主机池的包。 区域包来自 App Attach 。
应用程序
从下拉列表中选择一个应用程序。
申请标识符
输入应用程序的唯一标识符。
显示名称
为用户输入一个易记应用程序名称。
说明
输入应用程序描述。
完成此选项卡后,请选择“下一步”。
在“图标”选项卡上,选择“默认”以使用应用程序的默认图标,或选择“文件路径”以使用自定义图标 。 对于“文件路径”,请选择以下选项之一:
浏览 Azure 文件存储 :可使用 Azure 文件共享中的图标。 先选择“选择存储帐户” ,接着选择包含图标文件的存储帐户,然后选择“选择图标文件” 。 浏览到图标所在的文件共享和目录,选中要添加的图标(例如 MyApp.ico
)旁边的框,然后选择“选择” 。 也可以使用 .png
文件。 对于“图标索引” ,请指定要使用的图标的索引号。 此数字通常为 0 。
UNC 文件路径 用于使用来自文件共享的图标。 对于“图标路径” ,请输入图标文件的 UNC 路径,例如 \\MyFileShare\MyApp.ico
。 也可以使用 .png
文件。 对于“图标索引” ,请指定要使用的图标的索引号。 此数字通常为 0 。
完成此选项卡后,选择“查看 + 添加” 。
在“查看 + 添加”选项卡上,确保验证通过并查看用于添加应用程序的信息,然后选择“添加”以将应用程序添加到 RemoteApp 应用程序组中。
下面介绍如何使用 Az.DesktopVirtualization PowerShell 模块将应用程序从本文添加的包中添加到 RemoteApp 应用程序组。
在同一 PowerShell 会话中,如果包中有多个应用程序,则需要运行以下命令获取要从包中添加的应用程序的应用程序 ID:
Write-Host "These are the application IDs available in the package. Many packages only contain one application." -ForegroundColor Yellow
$app.ImagePackageApplication.AppId
记下要发布的应用程序 ID(例如 App
),然后运行以下命令,以将应用程序添加到 RemoteApp 应用程序组:
$parameters = @{
Name = '<ApplicationName>'
ApplicationType = 'MsixApplication'
MsixPackageFamilyName = $app.ImagePackageFamilyName
MsixPackageApplicationId = '<ApplicationID>'
GroupName = '<ApplicationGroupName>'
ResourceGroupName = '<ResourceGroupName>'
CommandLineSetting = 'DoNotAllow'
}
New-AzWvdApplication @parameters
通过运行以下命令验证应用程序组中的应用程序列表:
$parameters = @{
GroupName = '<ApplicationGroupName>'
ResourceGroupName = '<ResourceGroupName>'
}
Get-AzWvdApplication @parameters
可以通过提供包含更新的应用程序的新 MSIX 映像、Appx 映像或 App-V 包来更新现有包。 有关详细信息,请参阅新版本的应用程序 。
若要就地更新现有包,请选择适合你的方案的相关选项卡并按照步骤操作。
下面介绍如何使用 Azure 门户更新现有包:
在 Azure 虚拟桌面概述中,选择 “应用附加 ”。 你应该会看到所有现有的软件包的列表。
选择要更新的包,然后从概述中选择“更新” 。
输入更新后的包的信息:
“订阅”和“资源组”预填充了当前包的值 。
选择要更新包的主机池 。
选择映像路径:从存储帐户中选择 或输入 UNC 。 后续字段取决于所选的选项。
对于从存储帐户中选择 ,请选择包含更新后映像的存储帐户 。 选择“选择文件”,然后浏览到映像所在的文件共享和目录 。 选中要添加的映像旁边的框,例如 MyApp.cim
,然后选择“选择” 。
对于“输入 UNC”,请输入映像文件的 UNC 路径 。
对于 MSIX 包 ,请从映像中选择 MSIX 或 Appx 包。
完成这些字段后,选择“更新” 。
下面介绍如何使用 Az.DesktopVirtualization PowerShell 模块更新现有包。
在同一 PowerShell 会话中,通过运行以下命令获取更新的应用程序的属性并将其存储在变量中:
# Get the properties of the application
$parameters = @{
HostPoolName = '<HostPoolName>'
ResourceGroupName = '<ResourceGroupName>'
Path = '<UNCPathToFile>'
}
$app = Import-AzWvdAppAttachPackageInfo @parameters
运行以下命令,检查应用程序属性中是否只有一个对象:
$app | FL *
如果输出中有多个对象,例如同一应用程序的 x64 和 x86 版本,则可以通过运行以下命令,使用参数 PackageFullName
来指定要添加的应用程序:
# Specify the package full name
$packageFullName = '<PackageFullName>'
# Get the properties of the application
$parameters = @{
HostPoolName = '<HostPoolName>'
ResourceGroupName = '<ResourceGroupName>'
Path = '<UNCPathToFile>'
}
$app = Import-AzWvdAppAttachPackageInfo @parameters | ? ImagePackageFullName -like *$packageFullName*
通过运行以下命令更新现有包。 新的磁盘映像会取代现有磁盘映像,但保留现有分配。 在用户停止使用之前,请勿删除现有映像。
$parameters = @{
Name = '<PackageName>'
ResourceGroupName = '<ResourceGroupName>'
}
Update-AzWvdAppAttachPackage -AppAttachPackage $app @parameters
可以删除不再需要的应用附加包。 无需首先取消分配主机池或用户和组。 选择你的方案对应的相关选项卡并按照步骤操作。
提示
也可以从应用程序组中移除作为 RemoteApp 发布的 MSIX 软件包中的应用程序,方法与其他应用程序类型相同。 有关详细信息,请参阅移除应用程序 。
下面介绍如何使用 Azure 门户删除应用附加包:
在 Azure 虚拟桌面概述中,选择 “应用附加 ”。 你应该会看到所有现有的软件包的列表。
选中要移除的包名称旁边的框,然后选择“移除” 。 该包也会从其分配到的任何主机池中移除。
下面介绍如何使用 Az.DesktopVirtualization PowerShell 模块删除应用附加包。
在同一 PowerShell 会话中,运行以下命令以移除包含应用程序的包:
$parameters = @{
Name = '<PackageName>'
ResourceGroupName = '<ResourceGroupName>'
}
Remove-AzWvdAppAttachPackage @parameters
建议禁用 MSIX 和 Appx 应用程序的自动更新。 若要禁用自动更新,需要在会话主机上设置以下注册表值:
键: HKLM\Software\Policies\Microsoft\WindowsStore
类型: DWORD
Name:AutoDownload
Value:2
说明:禁用 Microsoft Store 自动更新 。
Key:HKCU\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager
类型: DWORD
名称:PreInstalledAppsEnabled
值 :0
说明 :禁用内容传送自动下载。
Key:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager\Debug
类型: DWORD
名称:ContentDeliveryAllowedOverride
Value:2
说明 :禁用内容传送自动下载。
可以使用组策略或 Intune 设置这些注册表值,具体取决于管理会话主机的方式。 还可以通过在每个会话主机上以管理员身份运行以下 PowerShell 命令来设置它们,但如果这样做,还应在操作系统映像中设置它们:
# Disable Microsoft Store automatic update
If (!(Test-Path "HKLM:\Software\Policies\Microsoft\WindowsStore")) {
New-Item -Path "HKLM:\Software\Policies\Microsoft\WindowsStore" -Force
}
New-ItemProperty -Path "HKLM:\Software\Policies\Microsoft\WindowsStore" -Name AutoDownload -PropertyType DWORD -Value 2 -Force
# Disable content delivery automatic download
If (!(Test-Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager")) {
New-Item -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" -Force
}
New-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" -Name PreInstalledAppsEnabled -PropertyType DWORD -Value 0 -Force
# Disables content delivery automatic download
If (!(Test-Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager\Debug")) {
New-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager\Debug" -Force
}
New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager\Debug" -Name ContentDeliveryAllowedOverride -PropertyType DWORD -Value 2 -Force
了解如何使用 RemoteApp 从“开始”菜单或文件路径发布应用程序。 有关详细信息,请参阅发布应用程序 。