2016-01-09 97 views
0

我嘗試寫入CurrentUser註冊表中的現有子鍵時拋出異常。如果註冊表爲空,它會寫得很好。例外是「無法寫入註冊表項」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

對不起,編輯包含例外語言 – 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