You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用NSIS封装exe制作安装包如何实现Windows开机自启

你之前使用的CreateShortCut命令仅创建了桌面、开始菜单目录的快捷方式,这些位置的快捷方式不会被系统自动加载运行,因此无法实现开机自启效果。可以通过以下两种常用方案实现需求:


方案1:向系统启动文件夹添加快捷方式

系统启动文件夹内的所有快捷方式会在用户登录时自动运行,NSIS提供了对应内置常量可以直接调用:

  • 仅当前用户生效(无需管理员权限,仅当前登录的用户开机后会启动程序):
    在安装逻辑段添加如下代码:
; 向当前用户的启动目录添加快捷方式
CreateShortCut "$SMSTARTUP\abc.lnk" "$INSTDIR\abc.exe"
  • 所有用户生效(需要安装包申请管理员权限,所有登录该设备的用户开机后都会启动程序):
    首先在NSIS脚本开头添加管理员权限声明:
RequestExecutionLevel admin

然后在安装逻辑段添加:

; 向所有用户的公共启动目录添加快捷方式
CreateShortCut "$ALLUSERS\$SMSTARTUP\abc.lnk" "$INSTDIR\abc.exe"

对应的卸载逻辑段需要添加删除逻辑,避免卸载后残留自启项:

; 删除启动目录快捷方式,按需选择对应路径即可
Delete "$SMSTARTUP\abc.lnk"
Delete "$ALLUSERS\$SMSTARTUP\abc.lnk"

方案2:写入Windows注册表开机启动项

通过修改注册表的Run节点实现自启,同样分两种生效范围:

  • 仅当前用户生效(无需管理员权限):
    在安装逻辑段添加:
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Run" "abc" '"$INSTDIR\abc.exe"'
  • 所有用户生效(需要管理员权限):
    在安装逻辑段添加:
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Run" "abc" '"$INSTDIR\abc.exe"'

对应的卸载逻辑段删除代码:

; 按需选择对应注册表根节点删除即可
DeleteRegValue HKCU "Software\Microsoft\Windows\CurrentVersion\Run" "abc"
DeleteRegValue HKLM "Software\Microsoft\Windows\CurrentVersion\Run" "abc"

注意事项

  • 如果你的abc.exe运行需要管理员权限,必须选择所有用户生效的自启方案,同时安装包申请管理员权限,否则普通用户登录时程序会因为权限不足无法启动
  • 不需要同时使用两种方案,选择任意一种符合需求的即可,避免重复启动

内容的提问来源于stack exchange,提问作者maverickabhi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 19:36:04