Files
gowallpaper/startup_windows.go

40 lines
936 B
Go

//go:build windows
package main
import (
"fmt"
"os"
"strings"
"golang.org/x/sys/windows/registry"
)
const (
runKeyPath = `Software\Microsoft\Windows\CurrentVersion\Run`
runValueName = "GoWallpaper"
)
func setStartWithWindows(enabled bool) error {
key, err := registry.OpenKey(registry.CURRENT_USER, runKeyPath, registry.QUERY_VALUE|registry.SET_VALUE)
if err != nil {
return fmt.Errorf("打开开机启动设置: %w", err)
}
defer key.Close()
if !enabled {
if err := key.DeleteValue(runValueName); err != nil && err != registry.ErrNotExist {
return fmt.Errorf("删除开机启动项: %w", err)
}
return nil
}
exe, err := os.Executable()
if err != nil {
return fmt.Errorf("获取程序路径: %w", err)
}
command := `"` + strings.ReplaceAll(exe, `"`, `\"`) + `"`
if err := key.SetStringValue(runValueName, command); err != nil {
return fmt.Errorf("写入开机启动项: %w", err)
}
return nil
}