PowerShell脚本复制文件到C:\Windows权限被拒绝如何无需管理员提权?
权限报错原因
Copy-Item : Access to the path 'C:\Windows\Java Config Files' is denied.
该报错和你使用的Copy-Itemcmdlet无关,本质是C:\Windows属于Windows系统核心目录,默认安全策略仅允许拥有管理员权限的进程对该目录执行写入、新增、修改类操作,普通权限运行的脚本没有对应操作权限。
无需管理员权限写入系统目录的方案不存在
Windows的系统目录权限控制是底层安全机制,没有任何PowerShell cmdlet、命令或者技巧可以绕过该限制,所有修改C:\Windows目录内容的操作必须获取管理员权限才能正常执行。
可行实现方案
方案1:脚本自动请求管理员权限(推荐)
不需要手动右键选择「以管理员身份运行」,只需在脚本开头添加以下提权代码,运行时会自动弹出UAC权限申请窗口,用户确认后即可自动以管理员身份执行后续复制逻辑:
# 校验当前运行身份是否为管理员 $currentPrincipal = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent()) if (-not $currentPrincipal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) { # 重新启动脚本并提权,携带原脚本路径参数 Start-Process powershell "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs exit } # 你的原复制逻辑,注意修正路径的斜杠避免匹配错误 Copy-Item -Path "C:\Java Config Files\*" -Destination "C:\Windows\" -Recurse
方案2:提前开放目标目录权限(不推荐)
如果要避免每次运行都提权,可以一次性以管理员身份执行以下命令,给普通用户开放对应目录的写入权限,该操作会降低系统安全性,仅测试环境可使用:
# 给所有用户开放目标子目录的完全控制权限 icacls "C:\Windows\Java Config Files" /grant Everyone:F /t
内容的提问来源于stack exchange,提问作者user14029480
相关产品推荐
相关产品推荐

