Registry.LocalMachine.OpenSubKey () возвращает null

Я получаю нуль от этой попытки получить доступ к реестру Windows:

using (RegistryKey registry = Registry.LocalMachine.OpenSubKey(keyPath)) 

keyPath – SOFTWARE\\TestKey

Ключ находится в реестре, так почему он не находит его под кустом локального компьютера?

В своем комментарии к Дане вы сказали, что получили доступ к учетной записи ASP.NET. Однако вы подтвердили, что это учетная запись, на которой работает сайт? Олицетворение и анонимный пользователь доступа могут быть легко упущены.

НЕПРЕРЫВНЫЙ КОД:

 Response.Clear(); Response.Write(Environment.UserDomainName + "\\" + Environment.UserName); Response.End(); 

Это может произойти, если вы на 64-битной машине. Сначала создайте вспомогательный class (требуется .NET 4.0 или новее):

 public class RegistryHelpers { public static RegistryKey GetRegistryKey() { return GetRegistryKey(null); } public static RegistryKey GetRegistryKey(string keyPath) { RegistryKey localMachineRegistry = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, Environment.Is64BitOperatingSystem ? RegistryView.Registry64 : RegistryView.Registry32); return string.IsNullOrEmpty(keyPath) ? localMachineRegistry : localMachineRegistry.OpenSubKey(keyPath); } public static object GetRegistryValue(string keyPath, string keyName) { RegistryKey registry = GetRegistryKey(keyPath); return registry.GetValue(keyName); } } 

Применение:

 string keyPath = @"SOFTWARE\MyApp\Settings"; string keyName = "MyAppConnectionStringKey"; object connectionString = RegistryHelpers.GetRegistryValue(keyPath, keyName); Console.WriteLine(connectionString); Console.ReadLine(); 
  • Добавление руководства к редактору в Visual Studio
  • Программно установить настройки прокси-сервера браузера в C #
  • Давайте будем гением компьютера.