private void button1_Click(object sender, EventArgs e)<br /> {<br /> RunWhenStart(false, "mystarton", @"C:/Program Files/UltraEdit/Uedit32.exe");</p><p> }</p><p> /// <summary><br /> /// 開機啟動項<br /> /// </summary><br /> /// <param name="Started">是否啟動</param><br /> /// <param name="name">啟動值的名稱</param><br /> /// <param name="path">啟動程式的路徑</param><br /> /// <returns></returns><br /> public static bool RunWhenStart(bool Started, string name, string path)<br /> {<br /> RegistryKey HKLM = Registry.LocalMachine;<br /> RegistryKey Run = HKLM.CreateSubKey("SOFTWARE//Microsoft//Windows//CurrentVersion//Run//");<br /> if (Started)<br /> {<br /> try<br /> {<br /> Run.SetValue(name, path);<br /> HKLM.Close();<br /> return true;<br /> }<br /> catch (Exception Err)<br /> {<br /> MessageBox.Show(Err.Message, @"MUS/", MessageBoxButtons.OK, MessageBoxIcon.Error);<br /> return false;<br /> }<br /> }<br /> else<br /> {<br /> try<br /> {<br /> Run.DeleteValue(name);<br /> HKLM.Close();<br /> return true;<br /> }<br /> catch (Exception)<br /> {<br /> return false;<br /> }<br /> }<br /> }
.Net 處理註冊表的時候,刪除時候,出現異常如下:
無法寫入到登錄機碼
後來查看了一下,Registry相關項目,原來OpenSubKey第二個參數可以設定註冊表的存取權限。
//如果需要項的寫存取權限,請設定為True
代碼如下:
regKey = Registry.CurrentUser.OpenSubKey(strRegPath, true);
問題解決。