package startup import ( "errors" "os" "path/filepath" "golang.org/x/sys/windows/registry" "tea.chunkbyte.com/kato/go-worm/lib/config" ) func Enabled() bool { k, err := registry.OpenKey(registry.CURRENT_USER, config.StartupRunKey, registry.QUERY_VALUE) if err != nil { return false } defer k.Close() _, _, err = k.GetStringValue(config.StartupValueName) return err == nil } func Enable() error { command, err := commandLine() if err != nil { return err } k, _, err := registry.CreateKey(registry.CURRENT_USER, config.StartupRunKey, registry.SET_VALUE) if err != nil { return err } defer k.Close() return k.SetStringValue(config.StartupValueName, command) } func Disable() error { k, err := registry.OpenKey(registry.CURRENT_USER, config.StartupRunKey, registry.SET_VALUE) if err != nil { if errors.Is(err, registry.ErrNotExist) { return nil } return err } defer k.Close() err = k.DeleteValue(config.StartupValueName) if errors.Is(err, registry.ErrNotExist) { return nil } return err } func commandLine() (string, error) { exe, err := os.Executable() if err != nil { return "", err } exe, err = filepath.Abs(exe) if err != nil { return "", err } return `"` + exe + `" -background`, nil }