RegisterUtil.cs 2.8 KB

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