Visual Studio 2017的配置存储在哪里?

44
在 VS 2015 及之前的版本中,设置存储在注册表中,例如 HKEY_CURRENT_USER\SOFTWARE\Microsoft\VisualStudio\14.0_Config。在 VS 2017 中,为了支持多个 VS 实例,根据此帖子,这些设置已经移出了注册表。
我先前一直在编辑注册表以在 Windows 高对比度模式下强制启用暗黑主题,参考此 SO 回答。现在我想在 VS 2017 中做同样的设置,但找不到这些设置存储的位置来进行更改。
请问 Visual Studio 2017 的这些设置存储在哪里?
5个回答

80
我在这篇博客文章中找到了答案:

看看我的机器上常规的 HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\15.0 键有多么空,注意没有15.0_Config键:

Regedit

相反,VS 2017的私有注册表存储在您的AppData文件夹中:

AppData

幸运的是,您可以使用regedit.exe加载一个私有hive。您需要选择HKEY_USERS节点,然后单击“文件”>“加载hive…”菜单。您选择privateregistry.bin文件,给hive命名(我输入了“VS2017PrivateRegistry”),现在你可以像往常一样看到填充的15.0_Config键(注意:完成后使用“文件”>“卸载hive”):

Private registry

使用此指南,我成功加载了私有注册表,按照先前提到的SO回答进行更改,卸载hive并使用Dark主题启动VS 2017! 编辑:我必须略微修改我用于编辑注册表的PowerShell脚本,如果有人感兴趣,这里是更新后的版本: 编辑2:现在已经改为自动加载私有注册表,包括垃圾回收以允许卸载hive: 注意:您必须找到您自己的正确路径以获取用户名 (C:\Users\Geir) 和 VS 版本 (15.0_8165452c)。
New-PSDrive HKU Registry HKEY_USERS

reg load 'HKU\VS2017PrivateRegistry\' "C:\Users\Geir\AppData\Local\Microsoft\VisualStudio\15.0_8165452c\privateregistry.bin"

$HighConstrastTheme = "HKU:\VS2017PrivateRegistry\Software\Microsoft\VisualStudio\15.0_8165452c_Config\Themes\{a5c004b4-2d4b-494e-bf01-45fc492522c7}"
$DarkTheme = "HKU:\VS2017PrivateRegistry\Software\Microsoft\VisualStudio\15.0_8165452c_Config\Themes\{1ded0138-47ce-435e-84ef-9ec1f439b749}"

Remove-Item -Path $HighConstrastTheme -Recurse
Copy-Item -Path $DarkTheme -Destination $HighConstrastTheme -Recurse

[gc]::collect()

reg unload 'HKU\VS2017PrivateRegistry'

你好。感谢您的PowerShell脚本。但是,文件路径和注册表路径似乎并不适用于所有情况。我使用的是Visual Studio 2017的发布版本,以及私有注册表路径和注册表中主题设置的路径。为了使其正常工作,我必须像这样更改脚本: - Jacob de Boer
1
@jacobdeboer 是的,对于你的情况,路径可能会稍有不同。我会添加一条注释来说明这一点。 - Geir Sagberg
加载这些注册表项并进行编程编辑是否可行?除非我弄错了,否则C# Win32注册表类似乎不支持此操作? - Shiv
记得卸载注册表,否则VS将无法启动。 - ccalboni
有点麻烦,不知道为什么他们不能在常规设置中添加“搜索结果格式”?无论如何-https://blogs.msdn.microsoft.com/zainnab/2010/01/03/customize-how-find-in-files-results-are-displayed-in-the-find-results-window/:解释了每个设置对于搜索结果格式所做的事情。 - T.S

3
我已经实现了一个基于批处理文件的方法,可以自动完成所有操作,并备份高对比度主题,以防需要出现任何问题时进行还原。
你可以在这里找到它。

1
以下VS2017PrivateRegistry.cmd批处理文件会为所有Visual Studio 2017实例加载注册表键作为HKLM_TMPVS_[id],启动注册表编辑器以便您更改Visual Studio设置,并在关闭注册表编辑器时卸载键:
for /d %%f in (%LOCALAPPDATA%\Microsoft\VisualStudio\15.0_*) do reg load HKLM\_TMPVS_%%~nxf "%%f\privateregistry.bin"
regedit
for /d %%f in (%LOCALAPPDATA%\Microsoft\VisualStudio\15.0_*) do reg unload HKLM\_TMPVS_%%~nxf

注意:首先关闭正在运行的带有后台进程的Visual Studio 2017实例,然后以管理员权限运行此文件。 更多详细信息请参见更改Visual Studio 2017私有注册表设置

0

通过检查进程监视器的日志,您可以看到它检查相同的注册表键。

VS registry key access

它只是没有被创建。你需要自己创建它。名称的一部分(e3d5273c)在你的机器上可能会有所不同。


有趣的是,我不确定为什么它会在自己的私有注册表中查找(请看我的回答)。但我不会继续追究这个问题了,因为我已经找到了一个解决方案。 - Geir Sagberg

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接