【发布时间】: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