Это работает для меня на всех платформах, включая Windows 10. Мои потребности просты, возможно, вы можете адаптировать подход, если вам нужно питание .
Я придумал небольшой скрипт, sudo.cmd
названный по имени команды sudo в Linux. Это работает достаточно хорошо, это думаю. Я обрисовал в общих чертах требования, шаги, которым нужно следовать, и сценарий в нижней части с примером. Сначала слово предупреждения.
ВНИМАНИЕ : Команда запускается в системном каталоге Windows по умолчанию. Вы хотите,cd
чтобы сначала где-нибудь в безопасности.
требования :
- Запустите команду с правами администратора из Windows .CMD
или cmd-shell.
- требуется обычная проверка привилегий Windows в команде
- Другими словами, команда НЕ будет работать, если я уже не вошел в систему с привилегированной учетной записью.
- Выполните команду с правами администратора и продолжайте при вызове внутри скрипта. Так что дождитесь завершения команды.
- Будь простым, чтобы он всегда работал
- Не нужно вводить пароль каждый раз, если я уже залогинен.
- Лучшим способом было бы, если бы я мог ввести пароль один раз, как это делает настоящая
sudo
команда в Linux.
решение :
- Создайте командный скрипт для выполнения всех переданных аргументов,
sudo.cmd
- Создание Windows , укороченные на имя команды скрипта:
sudo.lnk
.
- Поместите
sudo
ярлык в окно PATH, чтобы его можно было увидеть.
- Отредактируйте свойства ярлыка, сделайте
Start in:
путь пустым.
- Нажмите кнопку [
Advanced
] - ПроверитьRun as Administrator
- Включите ярлыки в пути Windows, используйте переменную окружения PATHEXT, а именно.
d:> echo %PATHEXT%
.lnk;.EXE;.CMD;.BAT;.COM
При вводе sudo dir
в командной строке Windows покажет
User Account Control
Do you want to allow this app to make changes to this device?
[YES] [NO]
Всплывающее окно контроля доступа. Если вы нажмете «[ NO
]», ничего не произойдет. Windows покажет сообщение " Access is denied.
".
Когда вы нажимаете «[ YES
]», команда каталогов запускается с повышенными привилегиями. Конечно, вы, вероятно, хотите что-то более интересное, например, остановку или запрос к службе:
sudo sc query SDRSVC
SDRSVC - это имя службы для «Службы резервного копирования Windows», в отдельном окне Cmd показано следующее:
[sudo]
administrator
---------------
sc query SDRSVC
SERVICE_NAME: SDRSVC
TYPE : 10 WIN32_OWN_PROCESS
STATE : 4 RUNNING
(STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
[done]
Press any key to continue . . .
Сам sudo.cmd
скрипт очень простой. Как я уже сказал, мои потребности просты. Я просто хочу остановить и запустить сервисы, пока я развертываю код для тестирования.
sudo.cmd
:
@echo off
@rem sudo.cmd
cd /d %temp%
@echo.
@echo. administrator
@echo. ---------------
cd
@echo.
@rem _________________________________________________
@rem -- Print usage . . .
@if [""] ==["%~1"] goto USAGE
@if /i ["--HELP"]==["%~1"] goto USAGE
@rem _________________________________________________
@rem
@echo. %*
@rem
%*
@rem
set EXIT_STATUS=%ERRORLEVEL%
@rem -- -- -- -- --
@echo.
@echo. [done]
@rem ______________________________________________________
:Exit
@echo.
@pause
exit /b %EXIT_STATUS%
@rem ______________________________________________________
:USAGE
@echo.
@echo ^Usage:
@echo. sudo ^<complete command line^>
@echo.
@echo. Attempts to rune the: ^<complete command line^>
@echo. under Administrator priviliges. Relies on Windows
@echo. prompt for elevated privileges.
@rem ______________________________________________________
@goto Exit
Команда pause
ждет вас, чтобы просмотреть результаты. Если вы удалите pause
окно администрирования, закроется, и вы не знаете, сработала ли команда. Команда ERRORLEVEL
from также возвращается.