【问题标题】: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,如果这不起作用,请尝试为您的系统提供更多控制权或使用管理员运行批处理文件

标签: windows batch-file windows-7-x64


【解决方案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 告诉批处理文件绕过拒绝访问错误。干杯。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-27
    • 2011-03-30
    • 1970-01-01
    • 1970-01-01
    • 2016-01-18
    • 1970-01-01
    • 1970-01-01
    • 2021-07-19
    相关资源
    最近更新 更多