Есть способ сделать это в PowerShell:
PS> Start-Process powershell -Verb runAs
Есть ли способ запустить программу или команду с повышенными правами, когда я уже нахожусь в командной строке без повышенных прав?
Точно такое же действие, которое будет выполнено, когда я нажму на ярлык программы и выберу Запуск от имени администратора .
Команда runas, вероятно, не является решением - она запрашивает пароль, но я просто хочу диалог UAC .
Есть способ сделать это в PowerShell:
PS> Start-Process powershell -Verb runAs
Похоже, эта утилита - Hidden Start - будет делать то, что вы хотите, если вы используете ключ / uac. Вот пример командной строки:
hstart /UAC "notepad.exe"
Это вызовет диалог UAC вместо того, чтобы запрашивать пароль, как это делает runas.
Основываясь на Рустам «s ответ, вы можете:
su.bat
командный файл где-нибудь в вашем стандартном% PATH% со следующей однострочной:@powershell start -verb runas %*
function su
Теперь вы можете выдавать su <command> [parameters]
в любой оболочке!
RunAdmin - это небольшая утилита (150 КБ), которая позволяет запускать программу из командной строки с повышенными правами (она отображает UAC). А напротив Hidden Start есть бесплатная.
Это работает для меня на всех платформах, включая Windows 10. Мои потребности просты, возможно, вы можете адаптировать подход, если вам нужно питание .
Я придумал небольшой скрипт, sudo.cmd
названный по имени команды sudo в Linux. Это работает достаточно хорошо, это думаю. Я обрисовал в общих чертах требования, шаги, которым нужно следовать, и сценарий в нижней части с примером. Сначала слово предупреждения.
ВНИМАНИЕ : Команда запускается в системном каталоге Windows по умолчанию. Вы хотите,cd
чтобы сначала где-нибудь в безопасности.
требования :
sudo
команда в Linux.решение :
sudo.cmd
sudo.lnk
.sudo
ярлык в окно PATH, чтобы его можно было увидеть.Start in:
путь пустым.Advanced
] - ПроверитьRun as Administrator
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 также возвращается.
Взгляните на Start ++ - он обладает этой функциональностью и множеством других полезных вещей. Для запуска с приглашением UAC просто sudo
введите имя вашей программы в командной строке, как показано здесь:
Вот некоторые другие функции (вы также можете добавить свои):
Это работает для Windows 10, не проверялось с другими версиями Windows.
Пример, чтобы открыть блокнот с правами администратора из cmd.exe, который запускает powershell, который запрашивает повышенные разрешения.
C:\>start powershell -command "&"
Это даст вам диалоговое окно UAC (если включено) с [Да] [Нет] или запросит пароль администратора.
Другой пример, чтобы открыть файл hosts с помощью блокнота:
C:\>start powershell -command "&"
Дополнительная информация: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/start-process?view=powershell-6.
Вы можете установить __COMPAT_LAYER = RunAsAdmin. Тогда команды будут выполняться в отдельном cmd с повышенными правами.
пример летучей мыши:
;Run next command elevated to Admin. set __COMPAT_LAYER=RunAsAdmin reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Group Policy\" /t REG_DWORD /v "NoBackgroundPolicy" /d "1" ;Disable elevation set __COMPAT_LAYER= ;continue non elevated reg add "HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Internet Explorer\Main" /t REG_SZ /v "Start Page" /d "https://www.google.com" /f
Все параметры режима совместимости перечислены в наборе средств для обеспечения совместимости приложений MS.