针对 Visual Studio 的企业部署配置策略

可以通过策略配置 Visual Studio 的部署和更新行为的某些方面。 其中一些配置是特定于已安装的 Visual Studio 实例的;而其中一些配置可以是全局配置,并应用于客户端计算机上的所有 Visual Studio 实例。 可以配置以下内容:

  • 是否应允许没有管理员权限的用户更新或修改 Visual Studio
  • 是否应从计算机中删除不受支持的组件
  • 与其他版本或实例共享的一些包的安装位置
  • 包是否要缓存及缓存位置
  • 是否应启用管理员更新以及应如何应用这些更新
  • 哪些更新通道可用以及如何向客户端呈现这些通道
  • 通知的显示方式或者不显示通知

通过使用 Microsoft Intune 设置目录或将 Visual Studio 管理模板 (ADMX) 导入组策略编辑器等旧工具,在整个组织中配置和部署计算机范围的全局策略。 还可以直接在客户端计算机上设置注册表值。 对于每个实例行为,通常通过在客户端计算机上使用命令行选项来控制。

注册表项

可以在注册表中的多个位置设置这些策略。 Visual Studio 按以下顺序依次查看是否设置了任何企业策略。 一旦发现策略值,就会忽略剩余键。

  1. HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\VisualStudio\Setup
  2. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\Setup
  3. HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\VisualStudio\Setup(64 位操作系统)

一些注册表值会在首次使用时自动设置(如果尚未设置的话)。 这种做法可确保后续安装使用相同的值。 这些值存储在第二个注册表项 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\Setup 中。

可以设置以下注册表值:

控制安装、下载和更新行为

此部分中的注册表设置可控制将 Visual Studio 产品下载和安装到客户端计算机上的方式和位置。

名称 类型 默认值 说明
AllowStandardUserControl REG_DWORD 0 允许没有管理员权限的用户使用安装程序 UI 手动管理其 Visual Studio 安装:如果设置为 1,则没有管理员权限的用户可以手动更新或回滚更新,而无需提供管理员密码。 如果设置为 2,则没有管理员权限的用户可以手动使用 Visual Studio 安装程序中的所有功能,包括可用选项卡中的修改安装。无论此策略设置为什么,标准用户都无法使用 --passive--quiet 参数以编程方式运行任何 Visual Studio 安装程序命令。 此策略要求在客户端计算机上安装最新版本的 Visual Studio 2022 安装程序。
CachePath REG_SZREG_EXPAND_SZ %ProgramData%
\Microsoft
\VisualStudio
\Packages
包清单和有效负载缓存路径:Visual Studio 安装程序对此存储缓存目录的路径强制实施 50 个字符的限制。 有关详细信息,请参阅禁用或移动包缓存页面
KeepDownloadedPayloads REG_DWORD 1 安装后保留包有效负载:禁用此策略会删除所修复或修改的实例的任何已缓存的包有效负载。 随时都可以更改值。 有关详细信息,请参阅禁用或移动包缓存页面。
SharedInstallationPath REG_SZREG_EXPAND_SZ %ProgramFiles(x86)%
\Microsoft Visual Studio
\Shared
共享安装路径:在各版本的 Visual Studio 实例间共享的一些包的安装目录。 虽然随时都可以更改值,但更改只会影响今后执行的安装。 不得移动旧位置上已安装的任何产品,否则它们可能无法正常运行。 Visual Studio 安装程序对路径强制实施 150 个字符的限制。
BackgroundDownloadDisabled REG_DWORD 0 自动禁用下载更新:如果设置为 1,则会阻止安装程序为任何安装的 Visual Studio 产品自动下载更新。 随时都可以更改值。
RemoveOos REG_DWORD 0 在更新期间删除不支持的组件:如果设置为 1,则 Visual Studio 安装程序将在后续更新期间删除所有转换为非支持状态的已安装组件。 如果设置为 0 或完全忽略,则 removeOos 行为将使用可实现此配置的其他位置,例如命令行参数或更新设置对话框。 有关详细信息,请参阅“删除不支持的组件”博客文章。 此功能要求在客户端计算机上安装 Visual Studio 2022 版本 17.4 安装程序。
DisableRollback REG_DWORD 0 禁用 Visual Studio 更新回滚或撤消功能:如果设置为 1,则会阻止用户访问回滚功能,这将阻止 Visual Studio 还原可能包含安全修补程序的最新更新。 如果设置为 0 或完全忽略,用户将能够访问 Visual Studio 中的回滚功能,还能够撤消更新、将其 Visual Studio 实例回滚到之前安装的版本。 有关详细信息,请参阅“回滚”博客文章
HideAvailableTab REG_DWORD 0 隐藏安装程序的“可用”选项卡:如果设置为 1,则管理员可以隐藏安装程序的可用选项卡,这可以防止组织内的用户意外安装错误的产品。
DisableSound REG_DWORD 0 在安装程序中禁用声音:如果设置为 1,则用户可以在 Visual Studio 安装程序中禁用声音,这将在安装程序操作完成或出现错误时阻止任何音频提示。 安装程序操作包括安装程序执行的安装、更新、修改和许多其他操作,或者尝试请求的操作时出现的任何错误对话框。 如果设置为 0 或完全丢失,则用户可以在安装程序中重新启用声音。 有关详细信息,请参阅禁用声音博客文章

重要

如果在任何安装后更改 CachePath 注册表策略,必须将现有包缓存移到新位置,并确保其受安全保护,以便 SYSTEMAdministrators 拥有完全控制权限,并且 Everyone 拥有读取访问权限 。 如果无法移动现有缓存或无法确保其受安全保护,可能导致今后执行的安装出现问题。

控制管理员更新

本部分中的注册表设置可控制是否以及如何将管理员更新应用于客户端计算机。

名称 类型 默认值 说明
AdministratorUpdatesEnabled REG_DWORD 0 启用管理员更新:可将管理员更新应用于客户端计算机。 如果此值缺失或设置为 0,则将阻止管理员更新。 如果值为 1,客户端计算机可使用通过 WSUS/SCCM 通道部署的更新。 建议将值设为 2,这使客户端计算机可接收通过 WSUS/SCCM 通道部署的或通过企业版 Windows 更新/Intune/Microsoft Endpoint 管理器通道部署的更新。 此注册表项适用于管理员用户。 有关详细信息,请参阅启用管理员更新
AdministratorUpdatesNotifications REG_DWORD 0 使管理员能够通知用户关闭 Visual Studio 以取消阻止管理员更新:如果 Visual Studio 处于打开状态或正在使用中,则管理员更新无法应用。 通过设置此注册表项,管理员可以触发 Windows Toast 通知提示,提示用户关闭 Visual Studio 并保存他们的工作,以便应用挂起的更新。 此注册表项适用于管理员用户。 有关详细信息,请参阅博客文章公告
AdministratorUpdatesOptOut REG_DWORD 0 选择退出管理员更新:表明用户不想接收 Visual Studio 的管理员更新。 若缺少注册表值或设置的值为 0,这意味着 Visual Studio 用户希望接收 Visual Studio 管理员更新。 此策略适用于开发人员用户,当他们在客户端计算机上拥有管理员权限时可配置该策略。

AdministratorUpdatesOptOut 项(用于对用户首选项进行编码)优先于 AdministratorUpdatesEnabled 项(用于对 IT 管理员意向进行编码)。 如果 AdministratorUpdatesOptOut 设置为 1,则即使 AdministratorUpdatesEnabled 项也设置为 1,客户端上依然会阻止更新。 此操作假定 IT 管理员可了解并监视哪些开发人员选择了退出,且之后双方可以讨论谁的需求更重要。 IT 管理员始终可以随时更改任意一个项。
UpdateConfigurationFile REG_SZREG_EXPAND_SZ %ProgramData%
\Microsoft
\VisualStudio
\updates.config
更新配置文件的自定义路径:客户端上可用于配置管理更新的文件的路径。 默认情况下不存在此文件且未设置该策略。 如果选择将策略添加到客户端计算机并定义自定义配置文件位置,则管理员更新将查找此文件。 如果文件不存在,则会引发异常,更新将失败。 有关详细信息,请参阅配置管理员更新的方法

重要

由 Intune 管理的连接了云的客户端计算机必须配置适用于企业的 Windows 更新配置,并选择加入“启用其他 Microsoft 产品的更新”,以便通过“适用于企业的 Windows 更新”Microsoft 更新通道接收 Visual Studio 管理员更新。

配置更新的源位置

通过此部分中的设置,管理员可以自定义和控制可用的更新通道及其在企业组织中向客户端呈现的方式。 有关更新设置的定义及其工作原理的信息,请参阅配置更新的源位置文档。 此功能要求客户端使用 Visual Studio 2022 安装程序,并且布局要使用 2021 年 11 月 10 日或之后发布的 2019 引导程序版本。 有关指导,请参阅如何通过 Visual Studio 2019 布局在客户端计算机上获取 Visual Studio 2022 安装程序文档。

本部分中的密钥仅适用于 Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\Setup registry path

名称 类型 说明
Channels Key 用于存储自定义布局通道信息的子密钥路径。 此密钥的名称视为通道名称,会显示在更新通道下拉列表中。 Channels 子项下须有 ChannelURI 值。
DisabledChannels Key 用于抑制通道并阻止其在“更新通道”对话框中显示的子密钥路径。 如果通道在此处定义(以及 ChannelURI 值),对话框中会将其筛出。
ChannelURI REG_SZ channelURI 通过添加到 Channels 配置单元添加到更新通道值列表,或通过添加到 DisabledChannels 注册表配置单元从更新通道列表中进行抑制。 对于 Microsoft 托管通道,channelURI 为“https://aka.ms/vs/16/release/channel”或“https://aka.ms/vs/16/pre/channel”。 对于布局,此值需要指向布局的 ChannelManifest.json。 请参阅示例。
Description REG_SZ 通道的两行自定义描述。 如果已通过布局安装,更新设置 UI 便默认为“专用通道”,可以使用此描述对其进行更改。

一些注册表文件示例展示了 IT 管理员可能想要如何自定义更新设置 UI

第一个注册表示例可用于之前从位于 \\vslayoutserver3\vs\2019_Enterprise 的网络布局中安装客户端的情况。 如前所述,Visual Studio 将此布局的频道名称默认为“专用频道”。 下面介绍如何自定义此布局的通道名称和说明。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\Setup\Channels]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\Setup\Channels\More meaningful name of my existing layout]
"channelUri"="\\\\vslayoutserver3\\vs\\2019_Enterprise\\ChannelManifest.json"
"Description"="Dev Tools based on VS 2019 16.9.Spring.2020 servicing baseline"

下面介绍如何为可用作更新源的其他自定义更新通道添加更多布局条目,以及如何禁止显示预览频道。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\Setup\Channels]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\Setup\Channels\Spring 2021 dev toolset]
"channelUri"="\\\\new2019layoutserver\\share\\new2019layout\\ChannelManifest.json"
"Description"="Dev Tools based on VS 2019 16.11.Spring.2021 servicing baseline"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\Setup\Channels\Next gen dev tools using VS 2022 toolset]
"channelUri"="\\\\vs2022Layoutserver\\share\\2022Enterprise\\ChannelManifest.json"
"Description"="Developer Tools based on the VS 2022 17.0.Winter.2021 LSTC servicing baseline"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\Setup\DisabledChannels\Preview]
"channelUri"="https://aka.ms/vs/16/pre/channel"

在 Visual Studio IDE 中控制通知

如上所述,Visual Studio 检查其安装位置(例如,网络共享或 Internet),以确定是否有任何更新。 若有更新,Visual Studio 会在窗口右下角显示通知图标来通知用户。

Visual Studio IDE 中的通知图标

如果不想提示最终用户进行更新,可禁用该通知。 (例如,如果通过中心软件分发机制来提供更新,可能希望禁用通知。)

由于 Visual Studio 2019 将注册表项存储在专用注册表中,因此无法照常直接编辑注册表。 不过,Visual Studio 提供可用于更改 Visual Studio 设置的实用工具 vsregedit.exe。 可以使用下面的命令禁用通知:

vsregedit.exe set "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise" HKCU ExtensionManager AutomaticallyCheckForUpdates2Override dword 0

可以使用下面的命令重新启用通知:

vsregedit.exe set "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise" HKCU ExtensionManager AutomaticallyCheckForUpdates2Override dword 1

若要返回到默认行为,还可以通过以下命令删除该值:

vsregedit.exe remove "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise" HKCU ExtensionManager AutomaticallyCheckForUpdates2Override

运行命令以更改 Visual Studio 设置后,启动 Visual Studio。 在关闭并重新启动 Visual Studio 之前,Visual Studio 的任何已运行的实例都不会更改行为。 另一种方法是,可以重新启动计算机,以确保设置生效。

可以使用以下命令确认该设置:

vsregedit.exe read "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise" HKCU ExtensionManager AutomaticallyCheckForUpdates2Override dword

如果值不存在(默认条件),前面的命令将指示无法读取该值。 如果设置了该值,则前面的命令将反映出 Visual Studio 配置中的值(它将指示 0 或 1,或者设置的任何值,只应为 0 或 1)。

由于 Visual Studio 2022 将注册表项存储在专用注册表中,因此无法照常直接编辑注册表。 不过,Visual Studio 提供可用于更改 Visual Studio 设置的实用工具 vsregedit.exe。 可以使用下面的命令禁用通知:

vsregedit.exe set "C:\Program Files\Microsoft Visual Studio\2022\Enterprise" HKCU ExtensionManager AutomaticallyCheckForUpdates2Override dword 0

可以使用下面的命令重新启用通知:

vsregedit.exe set "C:\Program Files\Microsoft Visual Studio\2022\Enterprise" HKCU ExtensionManager AutomaticallyCheckForUpdates2Override dword 1

若要返回到默认行为,还可以通过以下命令删除该值:

vsregedit.exe remove "c:\Program Files\Microsoft Visual Studio\2022\Enterprise" HKCU ExtensionManager AutomaticallyCheckForUpdates2Override

运行命令以更改 Visual Studio 设置后,启动 Visual Studio。 在关闭并重新启动 Visual Studio 之前,Visual Studio 的任何已运行的实例都不会更改行为。 另一种方法是,可以重新启动计算机,以确保设置生效。

可以使用以下命令确认该设置:

vsregedit.exe read "c:\Program Files\Microsoft Visual Studio\2022\Enterprise" HKCU ExtensionManager AutomaticallyCheckForUpdates2Override dword

如果值不存在(默认条件),前面的命令将指示无法读取该值。 如果设置了该值,则前面的命令将反映出 Visual Studio 配置中的值(它将指示 0 或 1,或者设置的任何值,只应为 0 或 1)。

(请确保替换目录,以匹配要编辑的已安装实例。)

提示

使用 vswhere.exe 可以在客户端工作站上查找 Visual Studio 的特定实例。

支持或故障排除

有时,你难免遇到一些问题。 如果 Visual Studio 安装失败,请参阅 Visual Studio 安装和升级问题疑难解答获取分步指南。

下面是另外几个支持选项: