RegisterUtil.cs 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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. LogUtil.WriteErrorLog(ex, "设置开机/取消失败!started=" + started);
  49. return false;
  50. }
  51. }
  52. else
  53. {
  54. try
  55. {
  56. key.DeleteValue(exeName);//取消开机启动
  57. key.Close();
  58. }
  59. catch (Exception ex)
  60. {
  61. LogUtil.WriteErrorLog(ex, "取消开机启动失败!started=" + started);
  62. return false;
  63. }
  64. }
  65. return true;
  66. }
  67. catch (Exception ex)
  68. {
  69. LogUtil.WriteErrorLog(ex, "取消/开机/失败!started=" + started);
  70. if (key != null)
  71. {
  72. key.Close();
  73. }
  74. return false;
  75. }
  76. }
  77. #endregion
  78. }
  79. }