Я не знаю встроенного одиночного звонка, который вы можете сделать, чтобы сделать это.Однако вам не нужно вызывать OpenSubKey / GetValue и т. Д. Вызов CreateSubKey
создаст новый ключ или откроет существующий ключ, если он существует.
RegistryKey regKey = startingRootKey;
string[] RegKeys = pathToAdd.split('\'');
foreach (string key in RegKeys) {
regKey = regKey.CreateSubKey(key);
}
regKey.SetValue("ValueName", "Value");
Игнорировать лишние 'втам мне нужно было, чтобы форматирование выглядело правильно.??
Кроме того, убедитесь, что вы проверяете наличие исключений при добавлении разделов реестра ... существует много проблем с безопасностью и путями, которые могут пойти не так.Список исключений для ловушки: здесь .
EDIT Я делаю это слишком сложно!Я только что проверил ... следующее будет делать именно то, что вы хотите:
RegistryKey regKey = startingRootKey;
regKey = regKey.CreateSubKey(@"a\b\c\d");
regKey.SetValue("ValueName", "Value");
regKey.Close();
Он достаточно умен, чтобы разобрать вложенный путь.Просто убедитесь, что у вас есть символ @, иначе строка будет выглядеть так, как если бы она была экранирована.