Files
go-worm/lib/startup/startup.go
T

65 lines
1.3 KiB
Go

package startup
import (
"errors"
"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 := installedCommandLine()
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)
}
// SyncInstalledPath rewrites an existing Run entry to the AppData install path.
func SyncInstalledPath() error {
if !Enabled() {
return nil
}
return Enable()
}
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 installedCommandLine() (string, error) {
exe, err := config.InstalledExe()
if err != nil {
return "", err
}
return `"` + exe + `" -background`, nil
}