То, что вы хотите сделать, всегда будет взломом, потому что вы хотите неправильно использовать безопасность Windows в этом сценарии. Как правило, вы должны использовать свой логин для предоставления учетных данных, а затем назначать привилегии на их основе.
При этом, вы можете сделать скрипт для замены файла хоста.
Создайте следующий пакетный файл и назовите его как хотите. Я использую имя "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
Предполагая, что эти два файла существуют по этому пути:
- C:\Windows\System32\ Drivers \ Etc \ хостов
- C:\Windows\System32\ Drivers \ Etc \ hosts.other
Затем вы можете запустить команду ниже, и они поменяются именами:
myrename"C:\Windows\System32\drivers\etc\hosts" "C:\Windows\System32\drivers\etc\hosts.other"
Если файл A или файл B не найдены, эта ошибка отображается на экране, и процесс останавливается.
Поскольку файл хоста является системным файлом, UAC выдает всплывающее сообщение с вопросом, хотите ли вы разрешить это. Чтобы изменить это диалоговое окно на диалоговое окно с паролем, следуйте этому руководству: http://www.sevenforums.com/tutorials/77389-uac-require-password-administrator.html
Откройте меню «Пуск» и перейдите в окно поиска. Введите локальную политику безопасности, нажмите Enter. Как только эта программа открыта, перейдите к Локальным политикам, затем Параметры безопасности. Теперь прокрутите вниз, пока не увидите Контроль учетных записей пользователей в названии политик. После того, как вы их увидите, найдите два элемента с надписью Контроль учетных записей: поведение запроса на повышение прав для .... Щелкните правой кнопкой мыши на них и нажмите изменить. Измените значения на Запрашивать учетные данные. Выйти из программы.
Я не проверял это, но это должно работать. Просто поместите команду в ярлык, и она должна переключаться между режимами. Пароль требуется, чтобы вернуться и четвертый. Для этого также потребуется пароль для всех действий администратора, который всегда будет требоваться в этом сценарии, если вы не хотите, чтобы его легко обойти.
Обновить
Я проверил это, и это работает. Вы должны закрыть все открытые приложения, а также добавить это в конец:
net stop dnscache
net start dnscache
Вы можете сделать отдельный пакетный файл или просто пометить его в конце предыдущего. Кроме того, в вашем ярлыке обязательно перейдите к кнопке «Дополнительно» на вкладке «Общие» и установите флажок « Run as Administrator
. В противном случае он просто выдаст ошибки, запрещающие доступ.