Це працює для мене на всіх платформах, включаючи Windows 10. Мої потреби прості, можливо, ви можете адаптувати підхід, якщо вам потрібна потужність .
Я придумав невеликий сценарій, sudo.cmd
названий для команди sudo Linux. Він працює досить добре, як здається. Я окреслив вимоги, кроки, які слід виконувати, і сценарій знаходиться внизу з прикладом. Спочатку слово попередження.
ПОПЕРЕДЖЕННЯ : Команда за замовчуванням виконується у системному каталозі Windows. Вам захочетьсяcd
спочатку кудись у безпеці.
вимоги :
- Запустіть команду з адміністратором, який має пільги з Windows .CMD
або cmd-shell.
- вимагають звичайної перевірки привілеїв Windows для команди
- Іншими словами, команда НЕ буде працювати, якщо я вже не ввійшов у систему з привілейованим обліковим записом.
- Виконайте команду з дозволу адміністратора та продовжуйте, коли викликається всередині сценарію. Тож чекайте, коли команда завершиться.
- Будьте прості, щоб це завжди працювало
- Не потрібно вводити пароль кожен раз, якщо я вже ввійшов у систему.
- Кращим методом було б, якщо я можу ввести пароль один раз, як це реальна
sudo
команда в Linux.
рішення :
- Створіть командний скрипт для виконання всіх переданих аргументів,
sudo.cmd
- Створення Windows , укорочені на ім'я команди скрипта:
sudo.lnk
.
- Помістіть
sudo
ярлик у вашому Windows 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
з повертається також.