@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 ループが継続的に実行され、ログオフするかシステムを再起動する必要があるプロセスを停止します。
バッチ ファイルが 1 回か 2 回だけ実行され、管理者権限を取得していない場合は終了するように、誰でもバッチ ファイルの変更を提案できます。
ありがとうシバスンダール