RegisterUtil.cs 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. using Microsoft.Win32;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. namespace GeekDesk.Util
  8. {
  9. class RegisterUtil
  10. {
  11. #region 注册表开机自启动
  12. /// <summary>
  13. /// 开机自动启动
  14. /// </summary>
  15. /// <param name="started">设置开机启动,或取消开机启动</param>
  16. /// <param name="exeName">注册表中的名称</param>
  17. /// <returns>开启或停用是否成功</returns>
  18. public static bool SetSelfStarting(bool started, string exeName)
  19. {
  20. RegistryKey key = null;
  21. try
  22. {
  23. string exeDir = System.Windows.Forms.Application.ExecutablePath;
  24. //RegistryKey HKLM = Registry.CurrentUser;
  25. //key = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);//打开注册表子项
  26. key = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);//打开注册表子项
  27. if (key == null)//如果该项不存在的话,则创建该子项
  28. {
  29. key = Registry.LocalMachine.CreateSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run");
  30. }
  31. if (started)
  32. {
  33. try
  34. {
  35. object ob = key.GetValue(exeName, -1);
  36. if (!ob.ToString().Equals(exeDir))
  37. {
  38. if (!ob.ToString().Equals("-1"))
  39. {
  40. key.DeleteValue(exeName);//取消开机启动
  41. }
  42. key.SetValue(exeName, exeDir);//设置为开机启动
  43. }
  44. key.Close();
  45. }
  46. catch (Exception ex)
  47. {
  48. return false;
  49. }
  50. }
  51. else
  52. {
  53. try
  54. {
  55. key.DeleteValue(exeName);//取消开机启动
  56. key.Close();
  57. }
  58. catch (Exception ex)
  59. {
  60. return false;
  61. }
  62. }
  63. return true;
  64. }
  65. catch (Exception ex)
  66. {
  67. if (key != null)
  68. {
  69. key.Close();
  70. }
  71. return false;
  72. }
  73. }
  74. #endregion
  75. }
  76. }