即使具有管理员权限,批处理脚本访问也被拒绝

Posted

技术标签:

【中文标题】即使具有管理员权限,批处理脚本访问也被拒绝【英文标题】:Batch script access denied even with admin privileges 【发布时间】:2017-12-01 15:10:52 【问题描述】:

我在 Windows7 中有一个批处理脚本来更新失败的 hosts 文件。 我以具有管理权限的用户身份登录。

即使我使用“以管理员身份运行”选项运行脚本,在执行这部分脚本时我也会得到Access denied. 0 files copied

for /f "tokens=1-2 delims=:" %%a in ('ipconfig^|find "IPv4"') do set ip=%%b
set ip=%ip:~1%

REM create changing part of hosts file...   
if exist %temp%\temp.txt del %temp%\temp.txt
echo %ip% myproxy >> %temp%\temp.txt  

REM check this...
set hostpath=C:\WINDOWS\system32\drivers\etc

REM add static part of hosts file
type "%hostpath%\hosts-static" >> %temp%\temp.txt

REM replace hosts file
copy /y %temp%\temp.txt "%hostpath%\hosts"

ipconfig /flushdns
netsh interface IP delete arpcache
pause

我也尝试创建快捷方式并设置“高级 -> 以管理员身份运行”选项,但没有成功。

如果我以管理员身份打开 cmd shell,然后从那里运行脚本,一切正常,但无法直接双击文件(或其链接)运行它。 有什么想法吗?


编辑:

添加了整个脚本。

我尝试为以下命令创建快捷方式,以便以管理员身份执行

C:\Windows\System32\cmd.exe /c script.bat

它也失败了。 从同一个快捷方式(不带参数)我可以打开一个窗口,我可以在其中正确执行批处理。我真的不明白为什么。

【问题讨论】:

在我的机器上以管理员权限正常工作。没有它就有Access is denied。我通过双击运行它。你能展示剩下的代码吗? 尝试重启你的系统,好像一个进程对文件有一个主动锁定 尝试重新启动您的 PC,如果这不起作用,请尝试为您的系统提供更多控制权或使用管理员运行批处理文件 【参考方案1】:

在您的copy 命令之前尝试attrib -r -s -h -a "%hostpath%\hosts"。如果任何文件的属性为 +r、+s 或 +h,如果您尝试使用 copy 覆盖它,您将收到“访问被拒绝”。

【讨论】:

我尝试在脚本中添加该行,但仍然出现错误。 @ValentinaDiGiacomo 可能是病毒扫描软件阻止hosts 被覆盖?尝试禁用您的病毒扫描程序/互联网安全软件、CryptoPrevent 等?另外,尝试BatchGotAdmin 强制提升管理员权限。 可能是。可惜是公司的防火墙和杀毒软件,所以无法更改设置。【参考方案2】:

显然是一个迟到的回应,但只是用一个非常简单的解决方案解决了这个问题,所以我想我会分享:

使用ICACLS,您可以修改访问控制列表 (ACL) 以绕过拒绝访问错误。 运行以下命令:

ICACLS C:\path\to\batch\file\directory\* /C

参数 /C 告诉批处理文件绕过拒绝访问错误。干杯。

【讨论】:

以上是关于即使具有管理员权限,批处理脚本访问也被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

即使使用 sudo,权限也被拒绝 [重复]

'PermissionError:[Errno 13]权限被拒绝',使用批处理文件运行python脚本后

即使授予存储权限后,在三星手机上创建目录也被拒绝

即使 IAM 角色具有完整的 Redshift 权限,AWS Lambda 在调用 Redshift 的“CreateCluster”操作时也会出现“拒绝访问”错误

JDBC连接:即使所有Previlleges都被授予,用户也被拒绝访问[关闭]

即使用户登录,访问也被拒绝,春季安全性