autostart_windows.go 1001 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. //go:build windows
  2. package main
  3. import (
  4. "os"
  5. "golang.org/x/sys/windows/registry"
  6. )
  7. const (
  8. runKeyPath = "Software\\Microsoft\\Windows\\CurrentVersion\\Run"
  9. runValueName = "DeepSeekTray"
  10. )
  11. // isAutoStartEnabled 查询开机自启是否已启用。
  12. func isAutoStartEnabled() bool {
  13. k, err := registry.OpenKey(registry.CURRENT_USER, runKeyPath, registry.QUERY_VALUE)
  14. if err != nil {
  15. return false
  16. }
  17. defer k.Close()
  18. v, _, err := k.GetStringValue(runValueName)
  19. return err == nil && v != ""
  20. }
  21. // setAutoStart 写入/删除 HKCU Run 键(无需管理员权限)。
  22. func setAutoStart(enabled bool) error {
  23. k, err := registry.OpenKey(registry.CURRENT_USER, runKeyPath, registry.SET_VALUE)
  24. if err != nil {
  25. return err
  26. }
  27. defer k.Close()
  28. if !enabled {
  29. err := k.DeleteValue(runValueName)
  30. if err == registry.ErrNotExist {
  31. return nil
  32. }
  33. return err
  34. }
  35. exe, err := os.Executable()
  36. if err != nil {
  37. return err
  38. }
  39. return k.SetStringValue(runValueName, "\""+exe+"\" --silent")
  40. }