欢迎各位兄弟 发布技术文章
这里的技术是共享的
runas /user:CONTOSO\adminuser 来打开 hosts 文件
runas 以域管理员身份编辑 hosts 文件?由于 hosts 文件(位于 C:\Windows\System32\drivers\etc\hosts)是受保护的系统文件,普通用户无法直接修改。我们可以通过 runas 命令 以域管理员身份启动编辑器(如 notepad.exe)来修改它。
runascmdrunas /user:CONTOSO\adminuser "notepad C:\Windows\System32\drivers\etc\hosts"
替换 CONTOSO\adminuser 为你的 域管理员账号。
执行后,会提示输入密码:
输入 CONTOSO\adminuser 的密码:
输入正确的密码后,会以管理员身份打开 notepad 并加载 hosts 文件。
runas)如果 runas 报错(如 拒绝访问),可以尝试:
CMD在 CMD 窗口右键 -> 以管理员身份运行。
再运行:
cmdrunas /user:CONTOSO\adminuser "notepad C:\Windows\System32\drivers\etc\hosts"
powershell Start-ProcesspowershellStart-Process -FilePath "notepad" -ArgumentList "C:\Windows\System32\drivers\etc\hosts" -Verb RunAs -Credential "CONTOSO\adminuser"
输入密码后,会提升权限打开。
runas 提示 "拒绝访问" 或 "密码错误"✅ 检查:
域名是否正确(CONTOSO\adminuser 替换成真实域名)。
账户是否有管理员权限(可以使用 net user adminuser /domain 查询)。
密码是否正确(注意大小写)。
notepad 打开空白✅ 原因:
UAC 限制 (UAC 就是用户帐户控制),使用 方法 2(提升权限)。
hosts 文件权限问题(可用 icacls 调整权限)。
? 保存密码(仅限安全环境使用!)
cmdrunas /user:CONTOSO\adminuser /savecred "notepad C:\Windows\System32\drivers\etc\hosts"
第一次输入密码后,后续无需重复输入(慎用,有安全风险!)。
cmdpowershell -Command "Start-Process notepad -ArgumentList 'C:\Windows\System32\drivers\etc\hosts' -Verb RunAs -Credential (Get-Credential)"
输入账号密码后,会以管理员方式打开 hosts。
| 方法 | 命令 | 适用场景 |
|---|---|---|
runas 直接运行 | runas /user:域名\管理员 notepad hosts路径 | 需要手动输密码 |
runas /savecred | runas /user:域名\管理员 /savecred notepad hosts路径 | 免重复输密码(不安全) |
PowerShell 提权 | Start-Process notepad -ArgumentList hosts路径 -Verb RunAs | 最稳定方式 |
✅ 推荐使用 Start-Process -Verb RunAs(最稳定)
? 确保 adminuser 是域管理员,否则可能无权限!
如果 无法修改 hosts,请检查 文件是否被锁定 或 权限问题:
cmdicacls C:\Windows\System32\drivers\etc\hosts
需要给当前用户 (F) 完全控制权限(谨慎操作):
cmdicacls C:\Windows\System32\drivers\etc\hosts /grant 用户名:F
? 现在你可以顺利编辑 hosts 文件了!
runas /user 以本地管理员 打开 hosts 文件
由于 hosts 文件 (C:\Windows\System32\drivers\etc\hosts) 受 系统保护,普通用户无法直接修改。
我们可以通过 runas 命令 提权至 本地管理员 来编辑该文件。
runascmdrunas /user:Administrator "notepad C:\Windows\System32\drivers\etc\hosts"
Administrator 是 本地管理员账号名称(可能被改成其他名字)。
输入密码后,记事本将以管理员身份运行并打开 hosts 文件。
Administrator 账户不存在?检查本地管理员组:
cmdnet localgroup Administrators
换成你的管理员账号(如 PC-NAME\AdminUser):
cmdrunas /user:PC-NAME\AdminUser "notepad C:\Windows\System32\drivers\etc\hosts"
如果本地管理员账户密码未知,可以直接 右键 CMD -> 以管理员身份运行,然后:
cmdnotepad C:\Windows\System32\drivers\etc\hosts
适用于 当前账户已有管理员权限但仍提示"拒绝访问" 的情况。
psexec 提权如果 runas 失败(如 UAC 拦截),可以用 psexec(需下载 Sysinternals Suite):
cmdpsexec -i -s notepad C:\Windows\System32\drivers\etc\hosts
-i -s = 以 SYSTEM 权限运行(比管理员权限更高)。
psexec 需管理员权限运行。
hosts 文件权限(永久)如果不想每次都提权,可直接修改 hosts 文件的权限:
cmdicacls C:\Windows\System32\drivers\etc\hosts /grant Users:M
/grant Users:M = 给普通用户 Users 组 写权限 (M = Modify)。
慎用!这会降低系统安全性。
| 错误 | 原因 | 解决方案 |
|---|---|---|
拒绝访问 | 权限不足 | runas /user:Administrator 或 右键 CMD -> 以管理员身份运行 |
找不到文件 | 路径错误 | 确保路径是 C:\Windows\System32\drivers\etc\hosts |
密码错误 | 账号或密码错误 | 检查 net user 或改用管理员权限运行 CMD |
记事本打开后空白 | UAC 限制 | 方法 3 (psexec) 或 方法 4 (改权限) |
✅ 最稳定做法(手动输密码):
cmdrunas /user:Administrator "notepad C:\Windows\System32\drivers\etc\hosts"
✅ 不想输密码(管理员模式):
Win + X → Windows Terminal (管理员)
运行:
cmdnotepad C:\Windows\System32\drivers\etc\hosts
? 现在可以使用管理员身份编辑 hosts 文件了!
savecred 是什么简写
在 Windows 命令 runas /savecred 中:
savecred 是 "Save Credentials"(保存凭据)的简写
允许系统缓存用户输入的密码(存储在 Windows 凭据管理器)
下次使用 runas 时无需重复输入密码
cmdrunas /user:Administrator /savecred "notepad C:\Windows\System32\drivers\etc\hosts"
首次运行需输入密码
后续执行相同命令时自动调用缓存的密码
密码保存在:
控制面板 → 凭据管理器 → Windows 凭据
(条目名称为 WindowsLive:target=runas/user:username)
| 优点 | 风险 |
|---|---|
| 避免重复输密码 | 密码以明文存储(可被恶意程序读取) |
| 方便自动化脚本 | 任何用户都能调用缓存的凭据 |
❗ 建议仅用于测试环境,生产环境中应禁用此功能。
打开 control.exe /name Microsoft.CredentialManager
在 Windows 凭据 选项卡中删除相关条目
或通过命令强制清除:
cmdcmdkey /delete:runas/user:username
附:微软官方文档说明
/savecred参数会降低安全性,应谨慎使用
—— Microsoft Docs: runas 命令