Where does Visual Studio 2017 store its config?
In VS 2015 and earlier, settings were stored in the registry, e.g. HKEY_CURRENT_USER\SOFTWARE\Microsoft\VisualStudio\14.0_Config
. In VS 2017, to support multiple instances of VS, the settings were moved out of the registry, according to this post.
I have previously been editing the registry to force Dark Theme when Windows is in High Contrast mode, according to this SO answer. Now I want to do the same in VS 2017 but cannot find where the settings are stored, to make this change.
Where are these settings stored for Visual Studio 2017?
Solution 1:
I found the answer in this blog post:
See how empty is the regular HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\15.0 key on my machine and notice that there is no 15.0_Config key:
Instead, the VS 2017 private registry is stored in your AppData folder:
Fortunately, you can use regedit.exe to load a private hive. You need to select the HKEY_USERS node, and click the File > Load Hive… menu. You select the privateregistry.bin file, give a name to the hive (I entered “VS2017PrivateRegistry”) and now you can see the 15.0_Config key populated as usual (note: use File > Unload Hive when done):
Using this guide, I was able to load the private registry, do the changes from the SO answer mentioned earlier, unload the hive and start VS 2017 with the Dark Theme!
EDIT: I had to slightly modify the PowerShell script I used to edit the registry, here is the updated version if anyone is interested:
EDIT2: Now modified to include the loading of the private registry automatically as well, including a garbace collection to allow unloading the hive:
NOTE: You have to find your own correct path for the user name (C:\Users\Geir
) and VS version (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'
Solution 2:
I've implemented a batch-file-based approach that does everything automatically and also backs up the high contrast theme in case you need to restore it for any reason.
You can find it at https://randomshaper.blogspot.com.es/2017/06/visual-studio-2017-high-contrast-hack.html