【问题标题】:Where does Visual Studio 2017 store its config?Visual Studio 2017 将其配置存储在哪里?
【发布时间】:2016-12-13 11:28:40
【问题描述】:

在 VS 2015 及更早版本中,设置存储在注册表中,例如HKEY_CURRENT_USER\SOFTWARE\Microsoft\VisualStudio\14.0_Config。在 VS 2017 中,为了支持多个 VS 实例,根据this post 将设置移出注册表。

根据this SO answer,我之前一直在编辑注册表以在 Windows 处于高对比度模式时强制使用深色主题。现在我想在 VS 2017 中做同样的事情,但找不到设置的存储位置,以进行此更改。

Visual Studio 2017 的这些设置存储在哪里?

【问题讨论】:

    标签: visual-studio visual-studio-2017 high-contrast


    【解决方案1】:

    我在this blog post找到了答案:

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

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

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

    使用本指南,我能够加载私有注册表,从 the SO answer mentioned earlier 进行更改,卸载配置单元并使用深色主题启动 VS 2017!

    编辑:我不得不稍微修改我用来编辑注册表的 PowerShell 脚本,如果有人感兴趣,这里是更新版本:

    EDIT2:现在修改为包括自动加载私有注册表,包括允许卸载配置单元的垃圾收集:

    注意:您必须为用户名 (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的发布版本和私有注册表的路径和注册表中主题设置的路径。为了完成这项工作,我不得不像这样更改脚本:
    • @jacobdeboer 是的,对于您的情况,路径可能会略有不同。我将对此添加注释。
    • 是否可以加载这些配置单元并以编程方式对其进行编辑?除非我弄错了,否则 C# Win32 注册表类似乎不支持这一点?
    • 记得卸载hive否则VS不会启动
    • 我真的不明白为什么微软不让我们在高对比度模式下选择主题。
    【解决方案2】:

    我已经实现了一种基于批处理文件的方法,它可以自动执行所有操作,还可以备份高对比度主题,以防您出于任何原因需要恢复它。

    您可以在https://randomshaper.blogspot.com.es/2017/06/visual-studio-2017-high-contrast-hack.html找到它

    【讨论】:

      【解决方案3】:

      以下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 实例,然后以管理员权限运行此文件。

      更多详情请见Changing Visual Studio 2017 private registry settings

      【讨论】:

        【解决方案4】:

        通过检查来自Process Monitor 的日志,您可以看到它检查了相同的注册表项。

        它只是没有创建。您需要创建它。您的机器上的名称部分 (e3d5273c) 可能不同。

        【讨论】:

        • 很有趣,不知道为什么它会在它的私有注册表中以及它的私有注册表中查找(请参阅我的答案)。不过,我已经找到了解决方案,因此我不会再继续这样做了。
        【解决方案5】:

        真正的解决办法是让 Visual Studio 团队允许开发人员设置主题。如果您有兴趣修复此问题,请转到此 VS 问题报告并关注它并发表评论支持它。目前正在考虑中。

        Visual Studio forces the user to use its High Contrast theme when Windows is in High Contrast mode

        【讨论】:

          猜你喜欢
          • 2019-01-31
          • 1970-01-01
          • 2014-09-21
          • 2011-04-01
          • 1970-01-01
          • 2019-07-07
          • 2022-07-08
          • 2019-03-06
          • 1970-01-01
          相关资源
          最近更新 更多