应使用Windows原生RunOnce注册表键值实现首次登录自动运行一次:将程序绝对路径写入HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce,系统登录后自动执行并删除该键值,无需额外判断或清理。
如果您希望某个程序仅在 Windows 11 用户首次登录时自动运行一次,而非每次开机或每次登录都启动,则需绕过常规持久性启动机制(如设置、任务管理器、启动文件夹或 Run 注册表项),采用一次性触发策略。以下是实现该目标的多种独立方法:
该方法利用任务计划程序的“用户登录时”触发器配合“运行一次后禁用”逻辑,结合注册表标记判断是否为首次执行,确保程序仅在当前用户第一次登录时启动并自动禁用自身任务。
1、按下Win + R打开“运行”对话框,输入taskschd.msc并按回车,启动任务计划程序。
2、在右侧面板点击“创建基本任务”,命名为“首次登录启动项”,点击“下一步”。
3、在“触发器”页面选择“当用户登录时”,点击“下一步”。
4、在“操作”页面选择“启动程序”,点击“下一步”。
5、在“程序或脚本”栏中点击“浏览”,定位并选中目标.exe文件;若需带参数,填入“添加参数”框中。
6、勾选“当完成此向导时,打开属性对话框”,点击“完成”。
7、在弹出的属性窗口中,切换到“条件”选项卡,取消勾选“只有在计算机使用交流电源时才启动此任务”(避免笔记本断电失效)。
8、切换到“设置”选项卡,勾选“如果任务失败,重新启动任务”并设为“1分钟”,同时勾选“如果任务运行时间超过以下时间,则停止该任务”并设为“10分钟”。
9、点击“确定”,关闭窗口。
10、以管理员权限打开 PowerShell,执行以下命令创建首次标记:New-ItemProperty -Path "HKCU:\Software\MyFirstLogin" -Name "RanOnce" -Value 0 -PropertyType DWORD -Force。
11、新建一个批处理文件(如firstlogin.bat),内容为:
if not exist "%LOCALAPPDATA%\FirstLoginDone" (
start "" "C:\YourApp\app.exe"
mkdir "%LOCALAPPDATA%\FirstLoginDone"
)
exit /b
12、将该批处理文件路径填入任务的“程序或脚本”字段,替代原.exe路径。
RunOnce 是 Windows 原生支持的单次启动机制,系统在登录后执行其中条目并自动删除对应注册表值,天然满足“仅首次登录生效”要求,且仅对当前用户有效,无需额外清理逻辑。
1、按下Win + R打开“运行”对话框,输入regedit并按回车,启动注册表编辑器。
2、导航至路径:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce。
3、在右侧空白处右键 → 新建 → 字符串值,命名为任意有意义名称(如“MyFirstApp”)。
4、双击该新字符串值,在“数值数据”栏中输入目标程序的完整绝对路径(例如:"C:\Program Files\Notepad++\notepad++.exe" -multiInst -nosession)。
5、确认路径中所有空格和特殊字符已被英文双引号包裹,点击“确定”。
6、关闭注册表编辑器,注销当前用户并重新登录,程序将自动运行一次,随后该注册表项被系统自动清除。
该方法适用于域环境或本地高级配置,通过组策略首选项中的“登录脚本”配合文件系统条件检测,实现首次登录时执行且后续跳过,支持静默部署与集中管理。
1、按下Win + R,输入gpedit.msc并回车,打开本地组策略编辑器(家庭版不可用)。
2、依次展开:用户配置 → 首选项 → 控制面板设置 → 登录脚本。
3、右键“登录脚本” → 新建 → “脚本(PowerShell)”。在“脚本路径”中指定一个.ps1文件(如%USERPROFILE%\Scripts\firstlogin.ps1)。
4、在目标位置创建该.ps1文件,内容为:
if (-not (Test-Path "$env:LOCALAPPDATA\FirstLoginExecuted")) {
Start-Process "C:\YourApp\app.exe"
New-Item "$env:LOCALAPPDATA\FirstLoginExecuted" -ItemType Directory -Force | Out-Null
}
5、确保脚本所在目录可被用户读取,且PowerShell执行策略允许本地脚本(可临时执行:Set-ExecutionPolicy RemoteSigned -Scope CurrentUser)。
6、关闭组策略编辑器,重启或运行gpupdate /force使策略生效。
7、首次登录时脚本检测到标记不存在,执行程序并创建标记目录;后续登录因标记存在而跳过执行。
该方法不依赖系统服务或注册表深度修改,仅利用启动文件夹的自动执行特性与快捷方式的“运行后关闭”行为组合,配合目标程序自身退出后触发快捷方式删除,达成单次效果。
1、按下Win + R,输入shell:startup并按回车,打开当前用户启动文件夹。
2、在目标程序安装目录中,右键主.exe文件 → “创建快捷方式”。
3、右键新建的快捷方式 → 属性 → 在“快捷方式”选项卡中,将“运行方式”下拉菜单改为“最小化”。
4、点击“确定”保存。
5、将该快捷方式复制到已打开的启动文件夹中。
6、在启动文件夹中新建一个文本文件,重命名为cleanup.vbs,右键编辑,输入以下内容:
Set fso = CreateObject("Scripting.FileSystemObject")
fso.DeleteFile WScript.ScriptFullName, True
Set sh = CreateObject("WScript.Shell")
sh.Run """C:\YourApp\app.exe""", 0, True

7、将上述vbs中“C:\YourApp\app.exe”替换为实际路径,并将“.lnk”前的部分改为快捷方式实际名称(如“MyApp.lnk”)。
8、保存后,将该vbs文件也放入启动文件夹。
9、注销并重新登录,vbs脚本先运行程序,延迟2秒后尝试删除自身及同名快捷方式,确保下次登录不再触发。