2016-01-09 4 views
0

У меня есть исключение, когда я пытаюсь записать существующий под-ключ в реестре CurrentUser. Он записывает штраф, если реестр имеет значение null. Исключение составляет «Невозможно записать в раздел реестра»C# Реестр не может быть записан в

//create subkey 
RegistryKey lo1 = Registry.CurrentUser.OpenSubKey(KEY_NAME); 
// If the RegistrySubKey doesn't exist -> (null) 
if (lo1 == null) 
{ 
    try 
    { 
    lo1 = Registry.CurrentUser.CreateSubKey(KEY_NAME); 
    // Save the the current date 
    lo1.SetValue(KEY_NAME, DateTime.UtcNow); 
    } 
    catch (Exception e) 
    { 
     //on error, 
     return false; 
    } 
} 

Позже, если выполняются определенные условия, я хочу переписать значение. Я стараюсь, используя эту строку и есть исключение брошено

lo1.SetValue(KEY_NAME, DateTime.UtcNow); 
+0

Какая ошибка?! –

+0

Извините, отредактировано, чтобы включить исключение verbiage – coolhand

ответ

1

Попробуйте следующие

Registry.CurrentUser.OpenSubKey(KEY_NAME,true) 

ключ должен быть открыт для записи.

Если это не работает, попробуйте следовать.

var user = Environment.UserDomainName + "\\" + Environment.UserName; 
    var rs = new RegistrySecurity(); 
    rs.AddAccessRule(new RegistryAccessRule(user, 
    RegistryRights.ReadKey | RegistryRights.Delete | RegistryRights.WriteKey, 
    InheritanceFlags.None, 
    PropagationFlags.None, 
    AccessControlType.Allow)); 

    var lo1 = Registry.CurrentUser.CreateSubKey(KEY_NAME, RegistryKeyPermissionCheck.Default, rs); 
+0

Я пробовал и все еще получаю ту же ошибку, что не в состоянии записать в реестр – coolhand

+0

вы можете указать значение переменной KEY_NAME? – tchelidze

+0

Это имя приложения «GOLD_2016_v1.0.0» – coolhand

Смежные вопросы