@Echo off
:: Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
:: If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
Echo Requesting administrative privileges...
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
Echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
Echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
Exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( Del "%temp%\getadmin.vbs" )
Pushd "%CD%"
CD /D "%~dp0"
C:\Windows\System32\notepad.exe C:\Windows\System32\drivers\etc\hosts
我正在使用上面的批处理文件来编辑主机文件。在 Windows 7 中,默认情况下不会出现 UAC 提示。所以我用了这个。但是,当用户没有管理员权限来编辑主机文件时,它会持续运行 if 循环并停止我们需要注销或重新启动系统的进程。
所以任何人都可以建议对批处理文件进行任何更改,以便它只运行一次或两次,如果没有获得管理员权限,那么就退出。
谢谢西巴松达尔