✅ 在任务计划程序设置运行账户(用户名 / 密码)
入口:任务属性 → 常规选项卡,【安全选项】区域
作用:这个账户就是任务运行时的身份,程序 / 脚本的权限、访问文件、修改注册表,全部使用这个账户的权限。
⚠️ 注意:用户名密码不是写在【操作】页面,是在【常规】标签
图形界面操作步骤
-
打开任务属性 → 切换到【常规】选项卡
-
在安全选项区域,点 更改用户或组
-
在弹出框输入用户名:
-
本地账户格式:.用户名或者直接写用户名;域环境:域名用户名
-
点【检查名称】,文字下划线代表识别成功 → 确定
-
然后二选一:
-
① 仅当用户登录时运行:任务只在该用户登录后才能执行,可以弹出窗口;不需要保存密码
-
② 不管用户是否登录都要运行(后台执行,常用):必须输入该账户的密码,保存任务的时候会弹出窗口填写用户名 + 密码,Windows 会把凭据加密保存,电脑未登录也能后台跑任务
-
如果脚本需要管理员权限:勾选 以最高权限运行(修改注册表必备)
-
点确定保存,弹窗输入这个账号的账户密码
内置系统账户(SYSTEM / LOCALSERVICE)不需要密码 填写用户名:NT AUTHORITYSYSTEM,不用输入密码,直接确定
账户类型说明
-
普通本地管理员账户(需要密码) 适合导入 reg 注册表、执行系统脚本;选择【不管用户是否登录都要运行】,必须填写账号密码。
-
SYSTEM 账户(推荐后台执行系统操作,无需密码) 用户名填写:NT AUTHORITYSYSTEM最高系统权限,不需要密码,开机、登录触发器都能用;适合修改注册表、操作服务。
注意:SYSTEM 账户运行的程序没有桌面会话,GUI 窗口不会显示,只能后台控制台脚本。
PowerShell 创建任务,指定运行账号
# 设置运行身份为本地Administrator账户
= New-ScheduledTaskPrincipal -UserId ".Administrator" -LogonType Password -RunLevel Highest
# 创建操作(前面的操作代码)
= New-ScheduledTaskAction -Execute "reg.exe" -Argument import "D:scripttest.reg" -WorkingDirectory "D:script"
# 触发器
= New-ScheduledTaskTrigger -AtLogOn -Delay "00:00:30"
# 注册任务,注册时会要求输入账户密码
Register-ScheduledTask -TaskName "导入注册表任务" -Action -Trigger -Principal
-
-RunLevel Highest= 以最高权限运行
❗高频坑点
-
“不管用户是否登录都要运行” 必须填密码 账户修改过密码后,任务里面保存的凭据会失效,任务直接报错,需要重新编辑任务,再次输入新密码。
-
用户名写错 本地账户直接写用户名,域用户格式域名user;必须点【检查名称】验证。
-
报错:没有批处理登录权限 账户缺少【作为批处理作业登录】本地安全策略权限。
解决:本地安全策略 → 用户权限分配 → 添加该账户到【作为批处理作业登录】。
-
SYSTEM 账户不需要密码 选择 SYSTEM,不会弹出密码输入框,直接保存。
-
勾选 “以最高权限运行” 修改注册表、读写系统文件,一定要勾选,否则权限不足,虽然任务显示成功,但是注册表没有修改效果。
两种模式对比
表格
|
选项
|
仅当用户登录时运行
|
不管用户是否登录都要运行
|
|
是否需要密码
|
不需要
|
✅需要保存账户密码
|
|
能否弹出 GUI 窗口
|
✅可以
|
❌无桌面会话,只能后台控制台
|
|
适用场景
|
登录后执行、需要看窗口
|
后台自动执行,开机无人状态执行脚本
|
安全提醒(注册表自动化重点)
-
不要用高权限账户随便执行来路不明脚本。
-
账户密码保存在任务计划数据库,尽量使用专用管理员账户。
-
账户修改密码后,务必重新打开任务,重新录入密码,否则任务执行失败。
-
SYSTEM 权限很高,谨慎使用,一旦脚本写错,对系统破坏风险大。
小总结
-
修改运行账号:【常规】→【更改用户或组】
-
后台无人运行:选【不管用户是否登录都要运行】,填写账户密码
-
修改注册表:勾选【以最高权限运行】
-
想免密码后台执行,直接选用NT AUTHORITYSYSTEM
|