У меня есть небольшой скрипт, который выполняет процесс сборки и установки в Windows для Базар репозиторий, которым я управляю. Я пытаюсь запустить скрипт с повышенными правами администратора из в оболочке Windows (cmd.exe) — так же, как если бы я щелкнул ее правой кнопкой мыши и выбрал Запуск от имени администратора, но без использования каких-либо методов, требующих использования графического интерфейса.
задан 09 мая ’11, 22:05
Чтобы запускать команды от имени администратора, я сделал sudo -подобный инструмент для Windows, доступный в виде пакета Chocolatey: stackoverflow.com/a/54642324/1768303 — noseratio
9 ответы
Гибрид пакетной обработки/WSH может вызывать ShellExecute для отображения диалогового окна повышения прав UAC.
ответ дан 11 мая ’11, 20:05
Я думаю, что ранние версии NT использовали недокументированный флаг в STARTUPINFO для установки значка в консоли, но поддержка этого умерла в NT4 или NT5. Если у вас уже есть своя программа, почему вы не можете выполнить проверку администратора там? Файлы .pif, вероятно, все еще могут устанавливать значок, но я не знаю, поддерживаются ли файлы .pif в 64-битной Windows. — Андерс
Как создать bat файл в Windows
Нажмите кнопку запуска. В поле поиска введите «cmd», затем нажмите Ctrl + Shift + Enter
ответ дан 23 окт ’15, 08:10
не то, что спросил оп, но в любом случае — хорошо знать этот ярлык! — Благодарность — исполняемый
Все, что вам нужно сделать, это использовать runas команда для запуска вашей программы от имени администратора (с оговоркой).
runas /user:Administrator «cmdName parameters»
В моем случае это было
runas /user:Administator «cmd.exe /C %CD%installer.cmd %CD%»
Обратите внимание, что вы должны использовать кавычки, иначе команда runas сожрет параметр переключения на cmd.
Также обратите внимание, что административная оболочка (cmd.exe) запускается в папке C:WindowsSystem32. Это не то, что я хотел, но было достаточно просто передать текущий путь к моему установщику и сослаться на него, используя абсолютный путь.
Предостережение: включите учетную запись администратора
Использование runas таким образом требует включения учетной записи администратора, которая не используется по умолчанию в Windows 7 или Vista. Однако, здесь отличный учебник о том, как включить его тремя различными способами:
Я сам включил его, открыв Администрирование, Локальная политика безопасности, затем перейдите к Локальные политикиПараметры безопасности и изменяя значение Учетные записи: статус административной учетной записи политику на «Включено», что не является ни одним из трех способов, показанных в ссылке.
Еще более простой способ:
C:> net user Administrator /active:yes
ответ дан 11 мая ’18, 20:05
Есть ли способ работать от имени другого пользователя (с правами администратора), а не от имени администратора? Это очень важно для нас с рабочими компьютерами. — еж
Запуск приложений в Windows 7 от имени администратора
Я так себе представляю. Попробуйте и посмотрите, работает ли это. Но IDK, какие конкретные разрешения потребуются пользователю для запуска определенной команды или для получения «статуса администратора» в целом. — Джейпо
Это работает, но это не совсем похоже на Linux. Я заметил икоту во время его использования. Также сначала есть примерно 5-секундная пауза перед выполнением команды. Используйте его по своему усмотрению. — KeyC0de
Вы правы насчет икоты! Некоторые программы не будут работать с повышенными привилегиями, если оболочка ( explorer.exe ) также работает от имени администратора. (Например: control.exe .) Однако для моей первоначальной цели (бесшовная установка) ответ Андера гораздо лучше подходит. — Джейпо
Для демонстрации: self-elevating.bat «путь с пробелами» arg2 3 4 «еще один длинный аргумент»
И это еще одна версия, которая не требует создания временного файла.
Источник: stackovergo.com
Как выполнить команду от имени администратора из командной строки Windows?
У меня есть небольшой скрипт, который выполняет процесс сборки и установки в Windows для базар репозитории я управляющий. Я пытаюсь запустить скрипт с повышенными правами администратора из внутри оболочка Windows (cmd.ехе) — так же, как если бы я щелкнул правой кнопкой и выбрал Запуск от имени администратора, но без использования какого-либо метода, требующего использования графического интерфейса.
автор: Peter Mortensen
8 ответов
пакетный гибрид/WSH может вызывать ShellExecute для отображения диалога высот UAC.
автор: Anders
все, что вам нужно сделать, это использовать runas команда для запуска программы от имени администратора (с оговоркой).
runas /user:Administrator «cmdName parameters»
в моем случае, это был
runas /user:Administator «cmd.exe /C %CD%installer.cmd %CD%»
обратите внимание, что вы должны использовать кавычки, иначе команда runas сожрет параметр switch в cmd.
также обратите внимание, что административная оболочка (cmd.exe) запускается в C:WindowsSystem32 папка. Это не то, что я хотел, но было достаточно легко пройти по текущему пути к моему установщику, и ссылаться на него, используя абсолютный путь.
внимание: включить учетную запись администратора
использование runas таким образом требует, чтобы учетная запись администратора была включена, что не является значением по умолчанию для Windows 7 или Vista. Однако,здесь это отличный учебник о том, как включить его, тремя различными способами:
Я сам включил его, открыв Администрирование, Локальная Политика Безопасности, затем перейдя к местные ПолитикиПараметры Безопасности и меняем значение Учетные Записи: Состояние Учетной Записи Администратора политика включена, что ни один из трех способов, показанных в ссылке.
еще более простой способ:
C:> net user Administrator /active:yes
автор: jpaugh
Нажмите кнопку «Пуск». В поле поиска введите «cmd» и нажмите клавишу Ctrl + Shift + Enter
автор: slashdottir
для демонстрации: self-elevating.bat «путь с пробелами» arg2 3 4 «Еще один длинный аргумент»
и это еще одна версия, которая не требует создания временного файла.
автор: Amr Ali
Я бы настроил ярлык, либо на CMD, либо на то, что вы хотите запустить, затем установите свойства ярлыка, требующие администратора, а затем запустите ярлык из вашего пакетного файла. Я не тестировал, чтобы подтвердить, что он будет уважать свойства, но я думаю, что это более элегантно и не требует активации учетной записи администратора.
также, если вы делаете это как запланированную задачу (которую можно настроить из кода), есть возможность запустить ее там.
автор: Kate Gregory
Я нашел это. Просто поставьте все это перед своим кодом, и он отлично работает.
REM —> Check for permissions >nul 2>%SYSTEMROOT%system32cacls.exe» «%SYSTEMROOT%system32configsystem» REM —> If error flag set, we do not have admin. if ‘%errorlevel%’ NEQ ‘0’ ( echo Requesting administrative privileges. goto UACPrompt ) else ( goto gotAdmin ) :UACPrompt echo Set UAC = CreateObject^(«Shell.Application»^) > «%temp%getadmin.vbs» echo UAC.ShellExecute «%~s0», «», «», «runas», 1 >> «%temp%getadmin.vbs» «%temp%getadmin.vbs» exit /B :gotAdmin if exist «%temp%getadmin.vbs» ( del «%temp%getadmin.vbs» ) pushd «%CD%» CD /D «%~dp0» :—————————————
автор: Kapanther
простой трюк трубы, || , С некоторых .vbs используется в верхней части вашей партии. Он выйдет из regular и перезапустится как администратор.
кроме del /Q темп.vbs, когда он закончит использовать его.
автор: strance
обзор C:windowsSystem32 и щелкните правой кнопкой мыши на cmd.exe и запуск от имени администратора. Работал на меня в Windows 7.
Если вы пытаетесь запустить сценарий с повышенными привилегиями, вы можете сделать то же самое для файла сценария или использовать запуск планировщика как другой пользовательский параметр для запуска сценария.
Источник: askdev.ru
Запуск cmd.exe от имени SYSTEM
Иногда требуется запустить какой-либо процесс или скрипт от имени системной учетной записи. Сделать это можно из cmd.exe, а вот чтобы запустить cmd.exe под SYSTEM, можно воспользоваться вот таким не сложным батничком:
1: sc create RunAsSystemSvc binpath= «cmd /K start» type= own type= interact
2: sc start RunAsSystemSvc
3: sc delete RunAsSystemSvc
Обратите внимание на пробелы в параметрах. Кроме этого, выполнение строки 2 выдаст ошибку, но это нормально.
Под Windows Server 2003 данный батник работает без проблем. А вот под Windows 7 есть нюансы. Во первых, его необходимо запускать с повышенными привелегиями (Run as administrator). Кроме этого, после запуска появится предложение переключить экран на просмотр собщения от окна:
Необходимо нажать View the message, и экран будет переключен на окно cmd, запущенного под учетной записью SYSTEM. После выполнения всех действий необходимо выйти из консоли cmd (команда exit), а затем нажать кнопку Return Now.
Источник: freemanru.wordpress.com