开机启动-自启
方法一:使用启动文件夹(Startup Folder)
这是你提到的方式,操作简单直观。
1. 打开启动文件夹
你有两种方式可以快速打开这个目录:
方式 A:直接粘贴路径 打开资源管理器,在地址栏直接粘贴:
C:\Users\xxx\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
然后回车。
方式 B:使用“运行”对话框(推荐,不用记路径)
按下 Win + R,输入:
shell:startup

回车,系统会自动打开当前用户的启动文件夹(其实就是你上面那个路径)。
2. 放入你的程序
建议不要直接把 xxx.exe 文件复制进去,而是创建一个快捷方式:
- 找到你的
xxx.exe,右键点击它,选择“创建快捷方式”。 - 把这个快捷方式剪切/复制到刚才打开的
Startup文件夹里。
3. 如果需要带命令行参数(比如指定 -filepath)
右键点击 Startup 文件夹里的快捷方式 → “属性”:
目标:在原来路径后面加上参数,例如:
"D:\xxx.exe" -filepath "C:\Program Files (x86)\xxx\att2000.mdb"
(注意:如果路径有空格,需要用英文双引号包裹 exe 路径)
- 起始位置:填写
D:\(这样程序运行时的当前目录就是这里,方便读取同目录下的配置文件)。
4. 验证
重启电脑,然后打开任务管理器(Ctrl+Shift+Esc),在“详细信息”里看是否有 xxx.exe 在运行。
方法二:使用注册表(更专业,适合无感部署)
如果你不想在启动文件夹里放快捷方式,或者希望程序自己注册开机启动,可以通过 Windows 注册表来实现。
手动添加注册表项
- 按下
Win + R,输入regedit打开注册表编辑器。 - 导航到路径:
(这个路径只对当前用户生效,不需要管理员权限;如果想对所有用户生效,用HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE下的同名路径,但需要管理员权限) - 在右侧空白处右键 → 新建 → 字符串值,名字随便起(比如
KaoqinService)。 - 双击它,在“数值数据”里填入:
"D:\xxx.exe" -filepath "C:\Program Files (x86)\xxx\att2000.mdb"
- 确定,重启电脑即可。
用命令行一键添加(适合写批处理脚本)
以管理员身份打开 CMD,执行:
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v "KaoqinService" /t REG_SZ /d "\"D:\xxx.exe\" -filepath \"C:\Program Files (x86)\xxx\att2000.mdb\"" /f
(注:引号嵌套比较多,注意转义)
补充:让程序自己注册开机启动(Go 代码实现)
如果你想做一个安装脚本,让程序第一次运行时自动把自己加入开机启动,可以用 Go 代码写注册表(需要引入 golang.org/x/sys/windows/registry 包):
import ("golang.org/x/sys/windows/registry""path/filepath""os")func setAutoStart() error {exePath, _ := os.Executable()key, err := registry.OpenKey(registry.CURRENT_USER,`Software\Microsoft\Windows\CurrentVersion\Run`, registry.ALL_ACCESS)if err != nil {return err}defer key.Close()// 把 exe 路径写入注册表,可以拼接参数return key.SetStringValue("KaoqinService", "\""+exePath+"\"")}
这样你只需要运行一次 xxx.exe -install 就能完成开机自启配置。
⚠️ 注意事项(重要)
- 无窗口程序:因为你用了
-H=windowsgui编译,开机后程序会在后台静默运行,桌面上不会有任何窗口。 - 如何关闭:需要按之前说的方式,用
taskkill /f /im xxx.exe或者访问/shutdown接口来关闭。 - 日志排查:开机自启后如果出问题,你看不到控制台输出。强烈建议按之前说的把日志写到文件里(比如写到
D:\xxx\xxx.log),方便排查启动失败的原因。 - 防火墙:如果是第一次运行,Windows 防火墙可能会弹窗询问是否允许网络访问。建议提前手动运行一次程序并勾选“允许”,这样开机自启时才不会卡在防火墙提示上。
需要我帮你把“日志写文件”和“注册表自注册”功能整合到你的 main.go 里吗?
