Windows自启动与服务
这页是对原 Windows应用笔记 的压缩版,保留 Windows 程序启动方式的核心区别。
先看结论
- 如果只是“用户登录后自动打开程序”,用启动文件夹快捷方式就够了。
- 如果要求“系统开机后、用户还没登录就开始运行”,那就不是普通自启动,而是 Windows 服务。
- GUI 程序不要试图直接在服务里显示界面,
Session 0隔离会把这条路堵死。
登录后自启动
常规做法是往启动目录放快捷方式:
C:\Users\用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
这类方式适合:
- 桌面工具
- 托盘程序
- Qt / Win32 普通 GUI 应用
优点是实现简单,缺点是依赖用户登录。
开机即运行
如果需求是:
- 用户未登录也要运行
- 需要常驻后台
- 需要作为系统能力对外提供服务
那就应该拆成两部分:
- 后台服务程序
- 用户界面程序
后台服务处理核心逻辑和系统生命周期,前台界面只负责展示和操作。
典型架构
- 服务进程:系统启动即运行,无界面
- GUI 进程:用户登录后启动
- 通信方式:共享内存、命名管道、套接字或其他 IPC
这种拆法的好处是:
- 生命周期边界清楚
- GUI 崩了不一定影响核心服务
- 更符合 Windows 自身的运行模型
适用边界
- 只是“我想少点一次图标”,不要上服务。
- 真正需要登录前启动、后台常驻、无人值守,才值得上服务架构。