實現開機啟動最簡單的方法是在注冊表里面寫入一個鍵值就可以了。
由於win7對安全要求跟xp不同,寫入注冊表往往繞不過UAC,需要程序提升權限,我開始也在這里走了不少彎路,后來在msdn論壇上面看到提示,在currentuser下面的鍵值寫入是不需要權限的,可以直接寫,我看網上很多帖子都寫在localmochine下面,走了彎路。
具體鍵值就是HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
下面兩個函數分別實現寫入鍵值和刪除鍵值:
1 private void regAutoStart() 2 { 3 RegistryKey reg; 4 reg = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true); 5 reg.SetValue("AutoDesktop", Application.ExecutablePath); 6 reg.Close(); 7 } 8 9 private void unRegAutoStart() 10 { 11 RegistryKey reg; 12 reg = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true); 13 reg.DeleteValue("AutoDesktop"); 14 reg.Close(); 15 }
由於我在外層有異常的判斷,這里就簡單的實現功能了。是不是很簡單,關鍵是CurrentUser。
我查看過QQ的實現方式,當你選擇qq隨機器啟動時,就會在HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run下面看到QQ2009(我的qq版本是2009)的鍵值。
