当前位置: 首页 > news >正文

【Windows】通过 runas 命令实现多用户权限测试的完整流程

▒ 目录 ▒

    • 🛫 导读
      • 需求
    • 1️⃣ 前期准备:创建管理员/普通测试用户
      • 1.1 创建普通用户Test(无管理员权限)
      • 1.2 创建管理员用户Admin(含管理员权限)
    • 2️⃣ 核心操作:通过runas命令切换用户命令行环境
      • 2.1 runas命令基础语法
      • 2.2 切换至普通用户Test的cmd环境
      • 2.3 切换至管理员用户Admin的cmd环境
    • 3️⃣ 测试执行:在不同用户环境下测试记事本写入文件
      • 3.1 普通用户Test环境
      • 3.2 管理员用户Admin环境
      • 3.3 禁用测试账号
    • 🛬 文章小结
    • 📖 参考资料

🛫 导读

需求

在软件测试场景中,需验证程序(如Test.exe)在不同权限用户环境下的运行兼容性(如管理员权限依赖、普通用户权限限制),避免因权限差异导致功能异常。

本文针对Windows环境,提供“创建差异化权限用户(管理员Admin、普通用户Test)→ 通过runas命令切换用户命令行环境 → 调用Test.exe执行测试”的完整流程,解决手动切换系统用户的繁琐问题,实现高效权限覆盖测试。

1️⃣ 前期准备:创建管理员/普通测试用户

需先在Windows系统中创建两个差异化权限的本地用户(管理员用户Admin、普通用户Test),确保权限边界清晰,测试结果可区分。

1.1 创建普通用户Test(无管理员权限)

普通用户用于模拟常规用户场景,仅拥有基础系统操作权限,步骤如下:

  1. 打开「控制面板」→ 进入「账户」→ 点击「其他账户」→ 选择「添加新用户」;
    在这里插入图片描述
  2. 在「本地用户和组」下面,右键点击「用户」;
    在这里插入图片描述
  3. 选择「新用户」,弹出创建用户的对话框;
  4. 输入用户名Test,设置密码(需符合Windows密码复杂度要求,如包含大小写+数字),完成创建;
    在这里插入图片描述

命令行快捷创建)若需快速操作,可通过管理员命令提示符执行:

# 创建普通用户Test,密码设为Test@123(实际使用需替换为复杂密码)
net user Test Test@123 /add
# 确认用户创建成功(查看用户列表)
net user

在这里插入图片描述

1.2 创建管理员用户Admin(含管理员权限)

管理员用户用于模拟高权限场景,需拥有系统级操作权限(如修改配置、访问受限目录),步骤如下:

  1. 重复1.1的前4步,创建用户名为Admin的本地用户;
  2. 然后右键点击Admin用户 → 选择「属性」;
  3. 按照下面步骤完成权限配置;
    在这里插入图片描述
  4. 验证权限:打开「命令提示符」,执行net localgroup administrators,若列表中包含Admin,则权限配置成功。

(命令行快捷创建)通过管理员命令提示符执行:

# 创建用户Admin,密码设为Admin@123(实际使用需替换为复杂密码)
net user Admin Admin@123 /add
# 将Admin添加到管理员组(赋予管理员权限)
net localgroup administrators Admin /add
# 验证是否加入管理员组
net localgroup administrators | findstr "Admin"

2️⃣ 核心操作:通过runas命令切换用户命令行环境

runas是Windows内置命令,可在当前系统会话中以指定用户身份启动程序(如cmd),无需注销切换用户。核心通过Win+R调用运行窗口执行命令,步骤如下。

2.1 runas命令基础语法

切换用户命令行环境的通用语法:

runas /user:用户名 cmd

关键参数说明:

  • /user:用户名:指定目标用户(本地用户需加计算机名前缀,如当前计算机名为WIN10-TEST,则完整用户名为WIN10-TEST\Test;若为域用户,需加域前缀);
  • cmd:指定启动的程序为命令提示符(即切换到目标用户的cmd环境);
    补充参数(可选):
  • /savecred:保存用户凭证(仅首次输入密码,后续无需重复输入,需管理员权限启用);
  • /noprofile:不加载用户配置文件(启动速度更快,适合仅需基础环境的场景)。

2.2 切换至普通用户Test的cmd环境

模拟普通用户权限执行测试,操作步骤:

  1. 按下Win+R组合键,打开「运行」窗口;
  2. 输入以下命令(需替换[计算机名]为实际Windows计算机名,可通过hostname命令查询):
    runas /user:[计算机名]\Test cmd
    
    示例(计算机名为WIN10-TEST):
    runas /user:WIN10-TEST\Test cmd
    
  3. 点击「确定」后,会弹出新的命令提示符窗口,提示“输入Test的密码:”;
  4. 输入创建Test用户时设置的密码(输入时无明文显示,输完按回车即可);
  5. 验证环境:若新cmd窗口标题显示“Administrator: C:\Windows\system32\cmd.exe”(普通用户默认不显示管理员标识),且执行whoami命令输出[计算机名]\test,则切换成功。

2.3 切换至管理员用户Admin的cmd环境

模拟管理员权限执行测试,操作步骤:

  1. 按下Win+R组合键,打开「运行」窗口;
  2. 输入以下命令(替换[计算机名]为实际计算机名):
    runas /user:[计算机名]\Admin cmd
    
    示例(计算机名为WIN10-TEST):
    runas /user:WIN10-TEST\Admin cmd
    
  3. 点击「确定」后,弹出新的命令提示符窗口,输入Admin用户的密码(输完按回车);
  4. 验证环境:执行whoami命令,输出[计算机名]\admin;执行net localgroup administrators | findstr "Admin",若有结果则确认管理员权限生效;新cmd窗口标题通常会显示“Administrator: C:\Windows\system32\cmd.exe”(管理员标识)。

3️⃣ 测试执行:在不同用户环境下测试记事本写入文件

切换至目标用户的cmd环境后,需通过命令行调用Test.exe,观察运行结果(如是否报错、功能是否正常、日志是否符合预期),完成权限覆盖测试。

3.1 普通用户Test环境

验证Test.exe在低权限环境下的兼容性,步骤:

  1. Win+R打开运行窗口,输入runas /user:Test cmd,然后点击《确定》按钮,打开命令行窗口:
    在这里插入图片描述
  2. 命令行中输入密码Test@123,将打开新的命令行窗口:
    在这里插入图片描述
  3. 在新的命令行窗口中输入notepad.exe,回车运行记事本。
  4. 随便输入内容123,点击保存,选择C盘根目录,点击保存,将提示没有权限
    在这里插入图片描述

3.2 管理员用户Admin环境

验证在高权限环境下的运行结果,步骤跟Test环境一样的,只是最后能正常保存!

3.3 禁用测试账号

测试结束后,安全起见,我们禁用两个使用中的账号。

net user Admin /active:no
net user Test /active:no

后续如需继续使用账号,可以通过下面命令开启

net user Admin /active:yes
net user Test /active:yes

🛬 文章小结

  1. 核心流程:通过“创建差异化权限用户→runas切换cmd环境→调用Test.exe测试”,实现高效权限覆盖测试,无需注销切换系统用户;
  2. 关键注意事项
    • 创建用户时需明确权限边界(普通用户设为“标准用户”,管理员用户加入管理员组);
    • runas命令需带计算机名前缀(本地用户),密码输入时无明文显示,需确保输入正确;
    • 调用Test.exe时建议使用绝对路径,避免因用户环境不同导致的路径解析差异;
  3. 测试重点:普通用户环境关注“权限不足”场景,管理员环境关注“高权限功能稳定性”,两者结果对比可发现权限设计问题;
  4. 效率优化:若需频繁测试,可将runas命令保存为批处理文件(如Test_User.cmdAdmin_User.cmd),双击即可快速切换环境。

📖 参考资料

  • Microsoft 官方文档:runas 命令用法
  • 如何启用和禁用Administrator账户,windows专业版和家庭版:https://zhuanlan.zhihu.com/p/668649208

ps: 文章中内容仅用于软件测试、系统管理等合法技术场景,操作时需遵守企业IT管理规范,不得用于未经授权的系统访问或权限滥用。


文章转载自:

http://JQRh1lzy.mszLs.cn
http://T11TxfpM.mszLs.cn
http://wBR1ku4r.mszLs.cn
http://JAowxONn.mszLs.cn
http://SKloo2oi.mszLs.cn
http://lwakE78i.mszLs.cn
http://1NB12CzR.mszLs.cn
http://4x8iynUV.mszLs.cn
http://yS1pUSPi.mszLs.cn
http://2AkBWxEN.mszLs.cn
http://WOxunG5l.mszLs.cn
http://hgIlisPB.mszLs.cn
http://dBm2iupw.mszLs.cn
http://b0RpqDon.mszLs.cn
http://DeLXtWQw.mszLs.cn
http://zOMvIrba.mszLs.cn
http://BV2qNZxF.mszLs.cn
http://5rKFFM9W.mszLs.cn
http://4tg3aJla.mszLs.cn
http://lL0gfWsz.mszLs.cn
http://6oZxjeQv.mszLs.cn
http://2tISnBoh.mszLs.cn
http://eGqMsEsG.mszLs.cn
http://Ctkp5Tb5.mszLs.cn
http://sRe4pRLx.mszLs.cn
http://3g1viVbK.mszLs.cn
http://zcCaO3Uu.mszLs.cn
http://Bf7cgeZW.mszLs.cn
http://4ztIzYD9.mszLs.cn
http://aEzw3pBU.mszLs.cn
http://www.dtcms.com/a/368735.html

相关文章:

  • LangChain实战(十六):构建基于SQL数据库的数据分析Agent
  • Struts2 工作总结
  • 软件设计模式之单例模式
  • 小迪安全v2023学习笔记(七十八讲)—— 数据库安全RedisCouchDBH2database未授权CVE
  • 【Go】P2 Golang 常量与变量
  • Leetcode—721. 账户合并【中等】
  • Go初级之十:错误处理与程序健壮性
  • Go语言的编译和运行过程
  • Golang语言设计理念
  • Golang Goroutine 与 Channel:构建高效并发程序的基石
  • Golang中的context包介绍及源码阅读
  • 【JMeter】分布式集群压测
  • GEO 搜索引擎优化系统源码搭建与定制开发,支持OEM
  • Linux学习-硬件(串口通信)
  • 【蓝桥杯选拔赛真题65】C++求个数 第十四届蓝桥杯青少年创意编程大赛 算法思维 C++编程选拔赛真题解
  • AI美颜与瘦脸技术全解析
  • Dify on DMS,快速构建开箱即用的客服对话数据质检服务
  • 数字人打断对话的逻辑
  • Claude Code成本浪费严重?80%开支可省!Token黑洞解密与三层省钱攻略
  • 基于STM32的交通灯设计—紧急模式、可调时间
  • (未完待续...)如何编写一个用于构建python web项目镜像的dockerfile文件
  • OpenResty 和 Nginx 到底有啥区别?你真的了解吗!
  • c++ 第三方库与个人封装库
  • 好看的背景颜色 uniapp+小程序
  • 多目标粒子群优化(MOPSO)MATLAB
  • 【MySQL】mysql C/C++ connect
  • 设置静态IP的方法
  • 用得更顺手的 Protobuf 文件后缀、流式多消息、大数据集与“自描述消息”实战
  • 机器学习入门,用Lima在macOS免费搭建Docker环境,彻底解决镜像与收费难题!
  • 从碎片化到一体化:Java分布式缓存的“三级跳”实战