为 Visual Studio 的企业部署配置策略
可以通过策略配置 Visual Studio 部署和更新行为的某些方面。 其中一些配置特定于已安装的 Visual Studio 实例,某些配置可以是全局配置,并应用于客户端计算机上的所有 Visual Studio 实例。 可以配置以下内容:
- 应允许没有管理员权限的用户更新或修改 Visual Studio
- 应从计算机中删除不支持的组件
- 其中安装了与其他版本或实例共享的某些包
- 包是否要缓存及缓存位置
- 应启用管理员更新以及如何应用管理员更新
- 哪些更新通道可用,以及它们如何呈现给客户端
- 通知的显示或不显示方式
使用 Microsoft Intune 设置目录 或通过将 Visual Studio 管理模板(ADMX) 导入到旧版工具(如组策略编辑器)来配置和部署整个组织的全局计算机范围策略。 还可以直接在客户端计算机上设置注册表值。 每个实例行为通常通过使用客户端计算机上的 命令行选项 来控制。
注册表项
注册表中有多个位置,可在其中设置这些策略。 Visual Studio 按以下顺序按顺序查看是否设置了任何企业策略。 发现策略值后,将立即忽略剩余的密钥。
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\VisualStudio\Setup
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\Setup
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 Installer 命令。 此策略要求在客户端计算机上安装最新版本的 Visual Studio 2022 安装程序。 |
CachePath |
REG_SZ 或 REG_EXPAND_SZ |
%ProgramData% \Microsoft \VisualStudio \Packages |
包清单和有效负载缓存路径:Visual Studio 安装程序为此存储缓存目录的路径强制实施 50 个字符的限制。 有关详细信息,请参阅 禁用或移动包缓存 页 |
KeepDownloadedPayloads |
REG_DWORD |
1 | 安装后保留包有效负载:禁用策略会删除修复或修改的实例的任何缓存包有效负载。 可以随时更改值。 有关详细信息,请参阅 禁用或移动包缓存 页。 |
SharedInstallationPath |
REG_SZ 或 REG_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 或完全缺失,则用户可以在安装程序中重新启用声音。 有关详细信息,请参阅 DisableSound 博客文章。 |
重要
如果在安装后更改 CachePath
注册表策略,则必须将现有包缓存移动到新位置,并确保包缓存得到安全保护,以便 SYSTEM
和 Administrators
拥有 完全控制,而 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_SZ 或 REG_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 注册表路径
名称 | 类型 | 说明 |
---|---|---|
Channels |
Key |
用于存储自定义布局通道信息的子密钥路径。 此密钥的名称被视为频道名称,并显示在 更新通道的下拉列表中。 ChannelURI 值必须位于 Channels 子键之下。 |
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 |
通道的两行自定义描述。 如果已经从布局设置中安装,则“更新设置”用户界面默认为“专用频道”,可以通过“说明”选项对其进行更改。 |
一些注册表文件示例,说明 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 2019 将注册表项存储在专用注册表中,因此不能以典型方式直接编辑注册表。 但是,Visual Studio 包含一个 vsregedit.exe
实用工具,可用于更改 Visual Studio 设置。 可以使用以下命令关闭通知:
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 包含一个 vsregedit.exe
实用工具,可用于更改 Visual Studio 设置。 可以使用以下命令关闭通知:
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 安装和升级问题 以获取分步指南。
下面是更多支持选项:
- 使用 安装聊天(仅限英语)支持选项来解决与安装相关的问题。
- 使用在 Visual Studio 安装程序和 Visual Studio IDE 中显示的 报告问题 工具向我们报告产品问题。 如果你是 IT 管理员且未安装 Visual Studio,可以提交 IT 管理员反馈。
- 建议一项功能、跟踪产品问题,并在 Visual Studio 开发人员社区中查找答案。