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

时间:2017-06-28 09:59:23

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

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

即使我用&#34运行脚本;以管理员身份运行"选项我在执行脚本的这一部分时得到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

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

2 个答案:

答案 0 :(得分:0)

attrib -r -s -h -a "%hostpath%\hosts"命令之前尝试copy。如果任何文件归因于+ r,+ s或+ h,如果您尝试使用copy覆盖它,则会获得“访问被拒绝”。

答案 1 :(得分:0)

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

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

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

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