必须以管理员权限启动Notepad++并手动打开系统文件才能保存:先右键快捷方式“以管理员身份运行”,再在程序内用Ctrl+O打开hosts;或用PowerShell命令Start-Process提权加载文件。

为什么直接右键“以管理员身份运行”后仍无法保存系统文件
Notepad++ 本身不拦截或修改 Windows 的 UAC 权限逻辑。即使你右键 Notepad++ 快捷方式选择“以管理员身份运行”,它启动后打开的文件仍受限于当前会话的完整性级别——如果用普通用户双击打开一个 C:\Windows\System32\drivers\etc\hosts,哪怕编辑器是管理员模式,hosts 文件实际是以低权限句柄被打开的,保存时会触发“访问被拒绝”错误,而不是弹出 UAC 提示。
必须用管理员权限打开文件,而不是仅启动编辑器
正确做法是:先确保 Notepad++ 进程本身以管理员权限运行,再通过它主动打开目标路径。否则,拖入、双击、或从“文件 → 打开”选中的文件仍继承调用方权限。
- 关闭所有 Notepad++ 实例
- 右键 Notepad++ 快捷方式 → 选择“以管理员身份运行”(不是“打开”)
- 在已提升权限的 Notepad++ 窗口中,使用
Ctrl+O或菜单“文件 → 打开”,手动导航到C:\Windows\System32\drivers\etc\,选中hosts并打开 - 编辑后
Ctrl+S可直接保存,不会报错
命令行快速打开更可靠(尤其对脚本或高频操作)
图形界面容易误操作,而命令行能明确控制权限上下文。Windows 的 start 命令不支持直接提权,但可借助 runas 或更稳妥的 PowerShell 方式:
PowerShell -Command "Start-Process notepad++ -ArgumentList 'C:\Windows\System32\drivers\etc\hosts' -Verb RunAs"
这条命令会:
- 触发 UAC 弹窗,要求确认提权
- 以完整管理员令牌启动 Notepad++ 进程
- 同时加载指定文件(注意路径必须用单引号包裹,避免空格解析错误)
把这行保存为 edit-hosts.ps1,右键“使用 PowerShell 运行”即可复用。
别忽略文件所有权和 ACL 的隐性干扰
即使成功以管理员身份打开并保存,某些系统文件(如 win.ini 或自定义驱动配置)可能被设为只读,或其父目录 ACL 显式拒绝 Administrators 组的写入权限。此时 Notepad++ 会报 Access is denied,但不是权限不足,而是文件系统级限制。
- 检查文件属性:右键 → “属性” → “安全”选项卡,确认
Administrators组有“修改”权限 - 若无,点击“编辑”→勾选“修改”→应用;必要时先点“高级”→“更改所有者”为 Administrators
- 临时去掉只读属性:
attrib -r C:\Windows\System32\drivers\etc\hosts
这类设置不会因 Notepad++ 是否管理员而绕过,是真正需要人工干预的环节。

















