Как запустить программу из командной строки с повышенными правами

Есть ли способ запустить программу или команду с повышенными правами, когда я уже в невыдвинутой командной строке?

Точно такое же действие, которое будет выполняться, когда я нажимаю на ярлык программы и выбираю Запуск от имени администратора .

Команда runas , вероятно, не является решением - она ​​запрашивает пароль, но я просто выберите диалог UAC .

41 голос | спросил Lukas Cenovsky 15 +04002009-10-15T19:33:29+04:00312009bEurope/MoscowThu, 15 Oct 2009 19:33:29 +0400 2009, 19:33:29

8 ответов


14

Похоже, эта утилита - Скрытый старт - сделает то, что вы пожелаете если вы используете переключатель /uac. Вот пример командной строки:

hstart /UAC "notepad.exe"

Это вызовет диалог UAC, а не попросит пароль, например, runas.

введите описание изображения здесь

ответил JeffP 15 +04002009-10-15T19:47:43+04:00312009bEurope/MoscowThu, 15 Oct 2009 19:47:43 +0400 2009, 19:47:43
43

В PowerShell существует способ сделать это :

PS> Start-Process powershell -Verb runAs
ответил Rustam 17 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 17 Sep 2014 13:52:00 +0400 2014, 13:52:00
2

RunAdmin - это небольшая утилита (150Kb), которая позволяет запускать программу из командной строки с повышенными правами (она покажет UAC). И напротив «Скрытого старта» свободен.

ответил SuperUser 27 Jpm1000000pmFri, 27 Jan 2017 22:21:54 +030017 2017, 22:21:54
2

На основе Рустама , вы можете:

  • Создайте пакетный файл su.bat где-то в вашем%% по умолчанию% PATH, со следующим однострочным: @powershell start -verb runas %*
  • Добавьте эту функцию в свой PowerShell $ profile : function su {start -verb runas @args}

Теперь вы можете выпустить su <command> [parameters] в любой оболочке!

ответил Nico57 14 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 14 Sep 2017 18:54:38 +0300 2017, 18:54:38
1

Это работает для меня на всех платформах, включая Windows 10. Мои потребности просты, возможно, вы можете адаптировать этот подход, если вам нужно power .

Я придумал небольшой скрипт с именем sudo.cmd , названный для команды Linux sudo. Он работает достаточно хорошо, чтобы думать. Я изложил требования, шаги, чтобы следовать, и сценарий находится рядом с дном с примером. Сначала слово предупреждения.

ПРЕДУПРЕЖДЕНИЕ : Команда запускается в системном каталоге Windows по умолчанию. Вы сначала захотите cd в безопасное место.

требования

  • Запустить команду с правами администратора из Windows .CMD
    или cmd-shell.
  • требуется обычная проверка привилегий Windows по команде
    • Другими словами команда не будет работать, если я уже вход в систему с привилегированной учетной записью.
  • Выполните команду с правами администратора и продолжайте, когда вызванный внутри скрипта. Поэтому дождитесь завершения команды.
  • Быть простым, чтобы он всегда работал.
  • Не нужно вводить пароль каждый раз, если я уже вошел в систему.
    • Лучшим методом будет, если я могу ввести пароль один раз, как и настоящую команду sudo в Linux.

Решение :

  1. Создайте командный скрипт для выполнения всех переданных аргументов, sudo.cmd
  2. Создайте короткую ссылку Windows для командного скрипта: sudo.lnk.
  3. Поместите sudo короткую вырезку в ваши окна PATH, чтобы ее можно было увидеть.
  4. Отредактируйте свойства короткого замыкания, введите путь Start in:.
  5. Нажмите кнопку [Advanced] - проверьте Run as Administrator
  6. Включить короткие сокращения в вашем пути к окну, используйте переменную среды 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.

ответил will 6 J0000006Europe/Moscow 2017, 04:35:44
0

Взгляните на Начать ++ - у этой функции есть много других полезных вещи. Для запуска с приглашением UAC просто используйте sudo, а затем имя вашей программы в командной строке, как показано ниже:

alt text

Вот некоторые другие функции (вы также можете добавить свои собственные):

alt text

alt text

ответил John T 15 +04002009-10-15T20:48:25+04:00312009bEurope/MoscowThu, 15 Oct 2009 20:48:25 +0400 2009, 20:48:25
0

Это работает для Windows 10, не тестировалось с другими версиями Windows.

Пример для открытия блокнота с правами администратора из cmd.exe, который запускает powershell, который запрашивает повышенные разрешения.

C:\>start powershell -command "&{start-process -filepath notepad -verb RunAs}"

Это даст вам диалоговое окно UAC (если включено) с помощью [Да] [Нет] или попросит пароль администратора.

Другим примером для открытия файла hosts с помощью блокнота будет:

C:\>start powershell -command "&{start-process -filepath notepad 'C:\Windows\System32\drivers\etc\hosts' -verb RunAs}"

Дополнительная информация:

ответил Alex 14 MarpmWed, 14 Mar 2018 18:49:37 +03002018-03-14T18:49:37+03:0006 2018, 18:49:37
-1

Вы можете установить __COMPAT_LAYER = RunAsAdmin Затем команды будут выполняться в отдельном увеличенном cmd

пример bat:

;Run next command elevated to Admin.
set __COMPAT_LAYER=RunAsAdmin
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Group Policy\{35378EAC-683F-11D2-A89A-00C04FBBCFA2}" /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.

ответил Michel 30 Jpm1000000pmMon, 30 Jan 2017 13:42:54 +030017 2017, 13:42:54

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132