首页/系统/Windows 运维速查/runas 以其他账户身份运行程序

runas 以其他账户身份运行程序

在交互会话中用别的身份启动进程:runas /user:DOMAIN\admin cmd;/savecred 保存凭据有安全代价。

Windows 运维速查系统更新于 2026-10-13

runas 是什么

runas 让你在不注销当前登录的前提下,用另一个账户的身份启动单个程序——比如用域管理员账号只开一个服务管理控制台,其余窗口仍是自己的普通身份。它是「临时借用身份」的工具,不是提权工具:新进程完全属于目标账户,当前会话的环境、映射盘、变量都不会带过去。它的实现依赖 Secondary Logon 服务,该服务被禁用时 runas 会直接失败。

基本信息

适用平台Windows 全版本 CMD 与 PowerShell
语法runas /user:域\账户 "命令"
常用参数/savecred 保存凭据(有安全代价)、/netonly 凭据只用于远程访问、/env 沿用当前环境变量、/noprofile 不加载目标用户配置、/showtrustlevels 列出信任级别
口令输入交互式提示输入,命令行不提供口令参数
依赖服务Secondary Logon(seclogon)必须处于运行状态
权限要求需知道目标账户口令;账户还需具备相应登录权利

典型使用场景

  • 单点管理:用管理员账户只开一个管理工具,避免整台机器都用高权限身份
  • 权限复现:以业务账户运行同一程序,验证「是不是权限差异导致功能异常」
  • 异构身份:本机账户与域账户之间切换,测试不同身份下的资源访问
  • 远程资源访问:用 /netonly 让网络访问使用另一套凭据,本地身份保持不变
  • 遗留软件:必须用本地管理员才能启动的老程序,临时以该身份运行

常用示例

常用示例
runas /user:DOMAIN\admin cmd.exe                          # 以域账户身份打开命令提示符
runas /user:localhost\localadmin "mmc services.msc"        # 以本机管理员身份打开服务控制台
runas /netonly /user:DOMAIN\fileaccess "cmd.exe"           # 本地身份不变,仅网络访问用该账户
runas /env /user:DOMAIN\admin "cmd.exe"                     # 沿用当前环境变量
runas /noprofile /user:DOMAIN\admin "notepad.exe"           # 不加载目标用户配置,启动更快
runas /showtrustlevels                                      # 查看可用信任级别
REM 注意:新会话里看不到当前用户映射的网络盘,需要重新建立
REM net use Z: \\SRV01\share /user:DOMAIN\fileaccess

参数与风险对照

参数作用风险或限制
/user:指定运行身份拼错域名会退回本地账户查找,导致登录失败
/savecred保存凭据供下次免密使用凭据留在凭据管理器里,共用设备上等于后门
/netonly凭据仅用于远程访问本地操作仍是当前身份,容易误判「提权没生效」
/env沿用当前环境变量不指定时使用目标用户的环境,脚本行为可能不同
/noprofile跳过目标用户配置文件能加快启动,但对依赖用户级配置的程序不适用
新进程不继承当前会话的映射网络盘,因为网络连接属于登录会话。以其他身份运行后如果需要访问共享,要在该会话里重新 net use 或直接用 UNC 路径。
runas 启动的是以目标账户身份运行的普通进程,它不会替你在界面上完成 UAC 提权确认。需要提升权限的操作,应在得到的会话里再按常规方式请求提权,别指望 runas 一步到位。

PowerShell 侧的做法

PowerShell 侧的做法
# 以其他账户启动进程(会提示输入口令,不支持 -Verb 与 -Credential 同时用)
Start-Process -FilePath 'cmd.exe' -Credential (Get-Credential 'DOMAIN\admin')
# 需要无人值守时改用计划任务指定运行账户
# schtasks /Create /TN RunAsTask /TR "cmd.exe /c D:\ops\job.cmd" /SC ONCE /ST 02:00 /RU DOMAIN\svc /RP *
# 查看当前会话里可用的凭据(谨慎使用)
# cmdkey /list
不要使用 /savecred:凭据会被保存到当前用户的凭据管理器中,之后任何人无需知道口令即可用该身份启动程序。自动化场景应改用计划任务的运行账户或托管服务账户。

易错点

  • 用 runas 做脚本自动化并依赖 /savecred:凭据长期驻留,共用或服务器设备上等同留下后门
  • 以为 runas 后就能访问原有映射盘:映射盘属于登录会话,新会话里不存在,需重新建立或改用 UNC
  • Secondary Logon 服务被禁用导致 runas 失败:启用该服务后再试,或改用其它身份切换方式
  • 在需要提权的操作上直接 runas:权限提升需在会话内单独请求,runas 本身不完成这一步
  • 口令错误次数过多触发账户锁定:域账户在多个环境反复尝试会连累业务账号被锁

数据来源与参考

  • Microsoft Learn:runas

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌