实现开机启动最简单的方法是在注册表里面写入一个键值就可以了。
由于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)的键值。