O que você está querendo fazer sempre será um hack, porque você está querendo usar a segurança do Windows incorretamente neste cenário. Em geral, você deve usar seu login para fornecer credenciais e, em seguida, atribuir privilégios com base naqueles.
Dito isso, você pode criar um script para trocar o arquivo host.
Crie o seguinte arquivo de lote e nomeie o que você quiser. Estou usando o nome "myrename.bat".
:: myrename.bat
@echo off
SETLOCAL
:: verify the first file exists
if not exist "%~1" ( echo ERROR: File not found "%~1" & goto endofscript )
:: verify the second file exists
if not exist "%~2" ( echo ERROR: File not found "%~2" & goto endofscript )
:: Create a guaranteed unique string for temporarily naming one file
set instance=%date:~-4,4%%date:~-10,2%%date:~-7,2%
set instance=%instance%-%time:~0,2%%time:~3,2%%time:~6,2%%time:~9,2%
set instance=%instance%-%RANDOM%
:: rename the first file to a temporary name
ren "%~1" "%~nx1.%instance%"
:: rename the second file to the first file name
ren "%~2" "%~nx1"
:: rename teh first file to the second file name
ren "%~1.%instance%" "%~nx2"
:endofscript
Supondo que esses dois arquivos existam neste caminho:
- C: \ Windows \ System32 \ drivers \ etc \ hosts
- C: \ Windows \ System32 \ drivers \ etc \ hosts.ou
Então você pode executar o comando abaixo e eles trocarão nomes:
myrename"C:\Windows\System32\drivers\etc\hosts" "C:\Windows\System32\drivers\etc\hosts.other"
Se o Arquivo A ou o Arquivo B não forem encontrados, esse erro será relatado na tela e o processo será interrompido.
Como o arquivo host é um arquivo de sistema, ele fará com que o UAC abra uma mensagem perguntando se você deseja permitir isso. Para alterar essa caixa de diálogo em uma caixa de diálogo de senha, siga este guia: link
Open the start menu and go to the search box. Type in Local Security Policy, now hit enter. Once this program is open, navigate to Local Policies, then Security Options. Now scroll down until you see User Account Control in the name of the policies. Once you see them, find the two that say User Account Control: Behavior of the elevation prompt for.... Right click on them and click modify. Change the values to Prompt for Credentials. Exit the program.
Eu não testei isso, mas deve funcionar. Basta colocar o comando em um atalho e ele deve alternar entre os modos. Uma senha é necessária para voltar e quarto. Isso também exigirá uma senha para todas as atividades do administrador, o que sempre será um requisito nesse cenário se você não quiser que ela seja facilmente ignorada.
Atualizar
Eu testei isso e funciona. Você deve fechar todos os aplicativos abertos e adicioná-lo ao final:
net stop dnscache
net start dnscache
Você pode criar um arquivo em lotes separado ou apenas marcá-lo no final do arquivo anterior. Além disso, no seu atalho, certifique-se de ir ao botão avançado na guia geral e verifique Run as Administrator
. Caso contrário, apenas lançará erros de acesso negado.