我在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
它也失败了。 从相同的快捷方式(没有参数)我可以打开一个窗口,我可以正确执行批处理。我真的不明白为什么。
答案 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告诉批处理文件绕过拒绝访问的错误。干杯。