Notepad++运行脚本提示“拒绝访问”主因是权限链断裂,需以管理员身份运行Notepad++、避免操作受保护路径、确保输出目录可写,并检查进程完整性级别与路径ACL。

Notepad++ 运行脚本(比如通过 NppExec 插件执行批处理、Python 或 PowerShell)时提示“拒绝访问”,**几乎全是权限链断裂导致的,不是脚本本身写错了,也不是插件没装好——而是 Notepad++ 进程没有足够权限去读/写目标路径下的文件或调用系统命令**。
Notepad++ 以普通用户启动,却试图操作受保护路径
常见于以下场景:
- 脚本里用了
cd C:\Windows\System32或copy *.txt C:\Program Files\MyApp\ -
NppExec命令中直接调用ping、netsh、reg add等需提权的系统命令 - 脚本输出日志到
C:\temp\log.txt,但该目录 ACL 没给当前用户写入权
此时 Notepad++ 进程运行在低完整性级别(Low IL),哪怕你是管理员组成员,UAC 也会拦截写入。解决办法只有一个:让 Notepad++ 本身以高完整性级别启动。
- 右键 Notepad++ 快捷方式 → “属性” → “兼容性” → 勾选「以管理员身份运行此程序」
- 重启 Notepad++(必须完全退出再启动,仅新建窗口无效)
- 验证:打开
NppExec控制台,执行whoami /priv,若看到SeDebugPrivilege已启用,说明提权成功
NppExec 脚本里调用外部命令被拦截
即使 Notepad++ 是管理员身份,NppExec 默认仍以受限子进程方式启动命令,部分高危命令(如 reg、sc、netsh)会被 Windows 拦截,报错 Access is denied 或 拒绝访问。
- 不要直接写
reg add ...,改用cmd /c "reg add ..."包一层 - 对 PowerShell 命令,加
-ExecutionPolicy Bypass参数,例如:powershell -ExecutionPolicy Bypass -Command "Get-Process" - 避免在脚本中切换到
C:\Windows或C:\Program Files下执行写操作;优先把临时文件输出到%USERPROFILE%\Desktop或%TEMP%
脚本输出路径无写入权限(尤其 C:\temp 或自定义目录)
很多人手动建了个 C:\temp 目录用于日志输出,但忘了设权限——它默认继承自 C:\ 根目录,而普通用户在根目录下没有写入权。
- 右键
C:\temp→ “属性” → “安全” → “高级” → “更改所有者”为当前用户,并勾选「替换子容器和对象的所有者」 - 返回“安全”选项卡 → “编辑” → “添加” → 输入当前用户名 → 勾选「修改」和「写入」(不必全选“完全控制”)→ 应用于“此文件夹、子文件夹和文件”
- 更稳妥的做法:改用
%USERPROFILE%\AppData\Local\Temp,这个路径天然对当前用户可写,且不会触发 UAC
Notepad++ 安装在 C:\Program Files\Notepad++ 导致插件权限异常
Notepad++ 8.8+ 默认安装到 C:\Program Files\Notepad++,但它的插件(尤其是 NppExec 的脚本缓存、临时 exe 文件)需要往自身目录写数据。Windows 会阻止非提权进程写入 Program Files,结果就是脚本看似执行了,但实际没生成文件、没更新状态、甚至静默失败。
- 卸载后重装,安装时取消勾选「Install for all users」,并手动指定路径为
D:\Tools\Notepad++(或其他非系统盘、无空格、无中文的路径) - 已安装的可迁移:复制整个
Notepad++文件夹到新路径,然后用新路径的notepad++.exe替换快捷方式目标,并在“兼容性”里继续勾选管理员运行 - 检查
NppExec设置里的「Scripts directory」是否指向可写路径(默认是%APPDATA%\Notepad++\plugins\Config\NppExec,这个位置通常安全)
最常被忽略的一点:权限问题从来不是单点故障,而是链条式失效——Notepad++ 进程权限、脚本调用上下文权限、目标路径 ACL、甚至输出文件本身的只读属性,任何一个环节卡住都会表现为“拒绝访问”。别只盯着错误弹窗,先查进程完整性级别,再看路径所有权,最后验文件属性。


















