Access Visual Studio 2017's private registry hive

前端 未结 2 2023
被撕碎了的回忆
被撕碎了的回忆 2020-11-30 12:34

Visual Studio uses a private registry hive instead of \"polluting\" the system registry - typically found somewhere like this:

C:\\Users\\Abx\\AppData\\Local\\

相关标签:
2条回答
  • 2020-11-30 13:06

    I just had a similar problem and found this SO posting. In my experience you have to use the x86 configuration for your project or else you will encounter an exception. I have adapted the code to your problem.

    ExternalSettingsManager ext = ExternalSettingsManager.CreateForApplication(@"C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\devenv.exe");
    SettingsStore store = ext.GetReadOnlySettingsStore(SettingsScope.UserSettings);
    var propNames = store.GetPropertyNames(@"ExtensionManager\EnabledExtensions");
    store.GetString(...)
    

    In addition to the above method, it seems to be possible to use the "normal" .Net methods for registry access after "CreateForApplication" has been called. Just use something like this:

    Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\VisualStudio\15.0\ExtensionManager\EnabledExtensions")
    
    0 讨论(0)
  • 2020-11-30 13:08

    To manually review, you can use the regedit.exe application to load the privateregistry.bin file by doing the following:

    1. Launch RegEdit.exe
    2. Select the Computer\HKEY_LOCAL_MACHINE node in the left-hand pane
    3. Select the File | Load Hive... menu item, and load the privateregistry.bin
    4. When prompted for a key name, just type in something like "VSRegHive"
    5. This will load the data into a VSRegHive under the HKLM node
    6. When finished exploring, be sure to select the VSRegHive and select File | Unload Hive... , before exiting the RegEdit.exe utility, otherwise VS will fail to start. Keeping the hive loaded in regedit creates some sort of lock that prevents DevEnv.exe from launching.

    To programmatically access the key RegLoadAppKey is indeed your best bet.

    0 讨论(0)
提交回复
热议问题