Powershell запуск от имени другого пользователя

Я не буду подробно описывать, зачем мне это нужно, но пользователи должны иметь возможность запускать PowerShell в качестве учетной записи службы, а при загрузке PowerShell ей необходимо запустить script. Я уже могу запустить PowerShell с сохраненными учетными данными (хранится как защищенная строка), но для жизни я не могу запустить script (находящийся в $args). Я пробовал разные вещи, а ниже я здесь. Любая помощь будет принята с благодарностью.

146 Chrips [2011-10-07 20:53:00]

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

Мне интересно, как это сделать с помощью PowerShell script. Я не хочу вводить свой пароль; Я просто хочу подражать правой клавише мыши Запустить метод "Администратор".

Все, что я читал до сих пор, требует, чтобы вы предоставили пароль администратора.

22 ответа

145 Решение Shay Levy [2011-10-07 21:12:00]

Если текущая консоль не поднята, а операция, которую вы пытаетесь выполнить, требует повышенных привилегий, тогда вы можете запустить powershell с помощью опции "Запуск от имени администратора"

65 pgk [2012-07-11 23:06:00]

Вот дополнение к предложению Шая Леви (просто добавьте эти строки в начало script):

Это приводит к тому, что текущий script передается новому процессу powershell в режиме администратора (если текущий пользователь имеет доступ к режиму администратора, а script не запускается как администратор).

51 Jayowend [2015-07-24 07:16:00]

Самоподъемная PowerShell script

Windows 8.1/PowerShell 4.0 +

Бенджамин Армстронг опубликовал отличную статью о самоподъемных сценариях PowerShell. Есть несколько незначительных проблем с его кодом; измененная версия на основе исправлений, предложенных в комментарии ниже.

В основном он получает идентификатор, связанный с текущим процессом, проверяет, является ли он администратором, а если нет, создает новый процесс PowerShell с правами администратора и завершает старый процесс.

11 manojlds [2011-10-07 23:48:00]

Вы можете легко добавить некоторые записи в реестре, чтобы получить контекстное меню "Запуск от имени администратора" для файлов .ps1 :

(обновлено до более простого script от @Shay)

В основном в HKCR:Microsoft.PowershellScript.1Shell
unascommand установите значение по умолчанию для вызова script с помощью Powershell.

Вы можете создать командный файл (*.bat), который запускает вашу powershell script с правами администратора при двойном щелчке. Таким образом, вам не нужно ничего менять в вашей powershell script. Для этого создайте командный файл с тем же именем и местоположением вашей powershell script, а затем установите следующие содержание в нем:

Предполагая, что ваша powershell script находится в пути C:TempScriptTest.ps1, ваш командный файл должен иметь путь C:TempScriptTest.bat. Когда кто-то выполнит этот командный файл, будут выполняться следующие шаги:

Команда cmd выполнит команду

Откроется новая сессия powershell и будет выполнена следующая команда:

В папке system32 откроется еще одна новая сессия powershell с правами администратора, и следующие аргументы будут переданы ей:

Следующая команда будет выполнена с правами администратора:

Как только аргументы пути и имени script имеют двойные кавычки, они могут содержать пробелы или символы одиночной кавычки (‘).

Текущая папка изменится с системы32 на C:Temp, и будет выполнен script ScriptTest.ps1 . После передачи параметра -NoExit окно не будет закрыто, даже если ваша powershell script выдает какое-то исключение.

8 John [2013-07-26 21:34:00]

Код, отправленный Джонатаном и Шей Леви, не работал у меня.

Пожалуйста, найдите рабочий код ниже:

7 akauppi [2014-11-17 18:05:00]

пока не указано. Кажется, он существует только с PowerShell 4.0.

Когда этот параметр switch добавлен в ваш запрос, он указывает, что сеанс Windows PowerShell, в котором вы находитесь запуск script должен выполняться с повышенными правами пользователя (Запуск от имени администратора).

Для меня это похоже на хороший способ сделать это, но я пока не уверен в полевых опытах. Время выполнения PowerShell 3.0, вероятно, игнорирует это или, что еще хуже, дает ошибку.

Когда script запускается как не-администратор, предоставляется следующая ошибка:

script ‘StackOverflow.ps1’ не может быть запущен, поскольку он содержит Оператор #requires для запуска в качестве администратора. Электрический ток Сеанс Windows PowerShell не работает как администратор. Начало Windows PowerShell с помощью параметра "Запуск от имени администратора", а затем снова попробуйте запустить script.

7 Rython [2013-09-11 14:24:00]

Вам нужно перезапустить script с правами администратора и проверить, был ли запущен script в этом режиме. Ниже я написал script, который имеет две функции: DoElevatedOperations и DoStandardOperations. Вы должны поместить свой код, который требует прав администратора, в первый и стандартные операции во второй. Переменная IsRunAsAdmin используется для идентификации режима администрирования.

Мой код – это упрощенная выдержка из Microsoft script, которая автоматически создается при создании пакета приложения для приложений Windows Store.

C:Users"username"AppDataRoamingMicrosoftWindowsStart MenuProgramsWindows PowerShell находится где ярлык PowerShell. Он также по-прежнему переходит в другое место, чтобы вызвать фактическое "exe" ( %SystemRoot%system32WindowsPowerShellv1.0powershell.exe ).

Так как PowerShell – это профиль пользователя, управляемый при разрешении; если ваше имя пользователя/профиль имеет права на выполнение чего-то, то в этом профиле, в PowerShell вы, как правило, тоже сможете это сделать. При этом было бы разумным, что вы изменили бы ярлык, расположенный под вашим профилем пользователя, например, C:Users"username"AppDataRoamingMicrosoftWindowsStart MenuProgramsWindows PowerShell .

Щелкните правой кнопкой мыши и щелкните свойства. Нажмите кнопку "Дополнительно" на вкладке "Ярлык", расположенной прямо под текстовым полем "Комментарии", рядом справа от двух других кнопок "Открыть расположение файла" и "Изменить значок" соответственно.

Установите флажок, который читается, "Запуск от имени администратора". Нажмите OK , затем Apply и OK . Еще раз щелкните правой кнопкой мыши значок "Windows PowerShell", расположенный в C:Users"username"AppDataRoamingMicrosoftWindowsStart MenuProgramsWindows PowerShell , и выберите "Pin to Start Menu/Taskbar".

Теперь, когда вы нажимаете этот значок, он будет ссылаться на UAC для эскалации. Выбрав "YES", вы увидите, что консоль PowerShell открыта, и она будет помечена как "Администратор" в верхней части экрана.

Чтобы перейти еще дальше. вы можете щелкнуть правой кнопкой мыши тот же значок ярлыка в вашем расположении профиля Windows PowerShell и назначить комбинацию клавиш, которая будет делать то же самое, что и при нажатии на недавно добавленный значок. Поэтому, когда он говорит "Shortcut Key", введите комбинацию клавиш/кнопок, например: Ctrl + Alt + P P (для PowerShell). Нажмите Apply и OK .

Теперь все, что вам нужно сделать, это нажать эту комбинацию кнопок, которую вы назначили, и вы увидите, что вызывается UAC, и после выбора "YES" вы увидите консоль PowerShell и в строке заголовка отобразится "Администратор".

3 VoidStar [2011-10-07 21:00:00]

Это поведение по дизайну. Существует несколько уровней безопасности, поскольку Microsoft действительно не хотела, чтобы файлы .ps1 были последним вирусом электронной почты. Некоторые люди считают, что это противоречит самому понятию автоматизации задач, что справедливо. Модель безопасности Vista + предназначена для "деавтоматизации" вещей, благодаря чему пользователь может их одобрить.

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

3 raphie [2016-06-02 06:27:00]

Вы также можете заставить приложение открывать его как администратора. Если у вас есть учетная запись администратора, конечно.

Найдите файл, щелкните правой кнопкой мыши > свойствa > Ярлык > Дополнительно и выберите Запуск от имени администратора

Затем нажмите "ОК".

2 DupDup [2013-05-13 03:04:00]

Другим более простым решением является то, что вы также можете щелкнуть правой кнопкой мыши по "C:WindowsSystem32cmd.exe" и выбрать "Запуск от имени администратора", тогда вы можете запускать любое приложение как администратор без предоставления пароля.

2 Jack [2015-05-13 13:23:00]

Я нашел способ сделать это.

Создайте пакетный файл, чтобы открыть script:

Затем создайте ярлык на рабочем столе (щелкните правой кнопкой мыши New → Shortcut).

Затем вставьте это в место:

При первом открытии вам нужно будет ввести пароль один раз. Затем он сохранит его в диспетчере учетных данных Windows.

После этого вы должны иметь возможность запускаться как администратор без необходимости вводить имя пользователя или пароль администратора.

Несколько ответов здесь близки, но немного больше работы, чем нужно.

Создайте ярлык для вашего script и настройте его на "Запуск от имени администратора":

  • Создайте ярлык.
  • Щелкните правой кнопкой мыши и откройте Properties.
  • Изменить Target от

Во всех поддерживаемых версиях Windows существует возможность запускать в текущей сессии программы от имени другого пользователя (Run As). Благодаря этому можно выполнить скрипт (.bat, .cmd, .vbs, .ps1), исполняемый .exe файл или запустить установку приложения (.msi, .cab) с полномочиями другого пользователя (привелигированного).

К примеру, благодаря возможности использовать функционал Run As можно в сессии пользователя с ограниченными правами запустить установку программы или открыть нужную MMC оснастку управления компьютером под административной учетйно записью. Также возможность запуска программы «от имени» может быть полезна в ситуациях, когда приложение настроено под другим пользователем (и соответственно хранит свои настройке в чужом профиле, к которому у данного пользователя нет данных), а его нужно запустить с теми же настройками в сессии другого пользователя.

В Windows 10 есть несколько способов запустить процесс от имени другого пользователя.

Запуск программы от имени другого пользователя из Проводника (File Explorer)

Самый простой способ запустить приложение под другим пользователем – воспользоваться графическим интерфейсом Проводника Windows (File Explorer). Просто найдите нужно приложение (или ярлык), зажмите клавишу Shift и щелкните по нему правой кнопкой мыши. Выберите пункт контекстного меню «Запуск от имени другого пользователя» (Run as different user).

В появившемся окне нужно будет указать имя и пароль пользователя, под чьей учетной записью нужно запустить приложение и нажать кнопку ОК.

Откройте Диспетчер задач и убедитесь, что приложение запущенно под указанным пользователем.

Что делать, если отсутствует пункт «Запуск от имени другого пользователя»

В том случае, если у вас в контекстном меню отсутствует пункт Запуск от имени другого пользователя (Run as different user), откройте редактор групповых политик (gpedit.msc) и убедитесь, что в разделе Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Пользовательский интерфейс учетных данных (Computer Configuration -> Administrative Templates -> Windows Components -> Credential User Interface) отключена (Не задана) политика Запрашивать достоверный путь для входа в учетную запись (Require trusted path for credential entry) .

Утилита Runas:как запустить приложение от имени другого пользователя из командной строки

Запустить программу или скрипт от имени другого пользователя можно и из командной строки или ярлыка приложения. Кроме того, этот способ предполагает возможность сохранения пароля пользователя, чтобы его не пришлось набирать каждый раз. Для этого можно воспользоваться консольной утилитой runas.exe.

Откройте командную строку (или окно Выполнить, нажав сочетание клавиш Win+R). Для запуска Блокнота под учетной записью admin выполните команду:

runas /user:admin “C:Windows
otepad.exe”

В отрывшемся окне появится приглашение «Введите пароль для admin», где нужно набрать пароль пользователя и нажать Enter.

При необходимости запуска программы под доменным пользователем нужно использовать формат имени UserName@DomainName или DomainNameUserName. Например, чтобы с помощью блокнота открыть текстовый файл от имени доменного пользователя, воспользуемся командой:

runas /user:corpdomain_admin “C:Windows
otepad.exe C: mp2871997x64.txt”

Введите пароль для corpdomain_admin:
Попытка запуска C:Windows
otepad.exe C: mp2871997x64.txt от имени пользователя "corpdomain_admin" .

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

При запуске такого ярлыка будет запрашиваться пароль пользователя.

Чтобы сохранить вводимый пароль другого пользователя нужно воспользоваться ключом /savecred.

runas /user:admin /savecred “C:Windows
otepad.exe”

После указания пароля он сохранится в диспетчере паролей Windows и при следующем запуске команды runas под этим же пользователем с ключом /savecred система автоматически воспользуешься сохраненным паролем, а не будет запрашивать его повторно.

Однако использование параметра /savecred не безопасно, т.к. пользователь, в чьем профиле сохранен чужой пароль может использовать его для запуска любой команды под данными привилегиями, или даже сменить чужой пароль. Кроме того, сохраненные пароли из Credential Manager можно легко украсть, поэтом лучше запретить использование сохраненных паролей (а тем более нельзя сохранять пароль привилегированной административной учетной записи).

Запуск MMC оснасток от имени другого пользователя

В некоторых случаях от имени другого пользователя нужно запустить одну из управляющих оснасток Windows. К примеру, если под другим пользователем нужно запустить оснастку Active Directory Users and Computers, можно воспользоваться такой командой.

runas.exe /user:DOMAINUSER “cmd /c start ”” mmc %SystemRoot%system32dsa.msc”

Аналогичным образом можно запустить любую другую оснастку (главное знать ее имя).

Как добавить пункт «Запуск от имени..» программам в меню Пуск

По-умолчанию в Windows 10 у элементов меню Пуск (начального экрана) отсутствует возможность запуска приложений под другим пользователем. Чтобы добавить контекстное меню «Запуск от имени другого пользователя» нужно включить политику Показывать команду «Запуск от имени другого пользователя» при запуске (Show “Run as different user” command on Start) в разделе редактора групповых политик (консоль gpedit.msc) Конфигурация пользователя -> Административные шаблоны -> Меню Пуск и панель задач (User Configuration -> Administrative Templates ->Start Menu and Taskbar).

Либо, если редактор gpedit.msc отсутствует, создать в ветке реестра HKEY_CURRENT_USERSoftwarePolicies
MicrosoftWindowsExplorer
ключ типа DWORD с именем ShowRunasDifferentuserinStart и значением 1.

Осталось обновить политики (gpupdate /force) и убедиться, что у программ в меню Пуск появится новое контекстное меню Дополнительно -> Запуск от имени другого пользователя.

Еще один, наверное самый простой способ, не указали. В проводнике, правым кликом с зажатой клавишей Shift

Извиняюсь, не внимательно прочитал…

Доброго,
Как в W10 запустить «Диспетчер задач» и «параметры» (SystemSettings) от имени Администратора?

Диспетчер приложений можно найти поиском и через правый щелчок сделать запуск от имени администартора.
Панель настройки можно вызвать командой: start ms-settings: В теории можно запустить командную строку из под админа и выполнить эту команду.
Не уверен, конечно, что так можно сделать из под простого пользователя.

Добрый день! не выходит сделать с помощью ключа savecred на билде 1803, тот же ярлык и та же программа на 1709 запускается. Пароль сохраняет но не запускает, никто с таким не сталкивался?

Программа расположена на локальном диске? Или вы запускаете ее из сетевой папки (через UNC путь и подмонтированной через net use)?

Возможно ли в windows xp, находясь в другой учётной записи, запустить программу от имени администратора так, чтобы она считала, что она запущена от вышеупомянутой другой учётной записи? То есть, предоставить ей привилегии администратора, но чтобы она сохраняла и считывала данные в другой учётной записи. Если знаете, подобно сделано в Linux. В ней, если предоставляешь программе права администратора, её настройки и данные сохраняются в учётной записи в которую ты вошел, а не в учетной записи администратора.

Мне это нужно для использования программы, которая удаляет мусор из реестра и диска после удаления программ.

В ней есть функция «установить и следить», позволяющяя установить программу с помощью этой программы и отслеживать, какие файлы и папки, а также изменения в реестре создаёт программа. Для этого требуется запускать её от имени администратора. Но если она запущена от имени администратора, то и программы она устанавливает тоже от имени администратора. И естественно, эти программы запускаются о имени администратора, что во-первых не безопасно, а во-вторых, они сохраняют все свои данные в учетной записи администратора, что мне не нужно, так как использовать я их буду не в учётной записи администратора. Конечно, я их после этого смогу запускать не в учетной записи администратора, но ведь данные, которые они сохранили при запуске в учетной записи администратора, в ней и останутся и так будет с каждой программой.

RUNAS [ [/noprofile Но это мало похоже, она будет запущенна всё равно от админа.

К сожалению не представляю как такое реализовать. Но и пробемы особой не вижу. В вашей ситуации возможно просто предоставить пользователю права админа.
Либо ставить программы под админом, а запускать от пользователя после настройки NTFS разрешений на папки. Все нормальные программы не привзвваются к учетным записям, из-под которых они установлены.

возможно просто предоставить пользователю права админа.

Ага, в том числе и вирусам. Я специально пользуюсь не адинистраторской учёткой, чтобы вирусам не дать шанса на проникновкение.

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

После установки программу требуется сразу запускать и настраивать, чтобы следящая за ней программа могла отследить, что она создаёт и изменяет после запуска. Я не идиот, чтобы запускать в админке только что установленную прогу.

Работая в XP не нужно беспокоится о вирусах 🙂 — система не поддерживается уже несколько лет. Последние истории с уязвимостями в smb1 (wannacry и not-a-petya должны были гарантированно сложить XP при попадании вируса в локальную сеть :). Будут еще…
В вашем случае вам нужен какой-то способ временного повышения прав пользователя до администратора при установке программы. У меня нет готовых ответов. из идей:
Т.е. перед установкой программы администратора запускает от себя некий скрипт, который добавляет пользователя в админы, запускает установку программы под пользователем (обязательно новая сессия) и сразу удаляет его из админов. Но запущенная сессия установки все еще привеллигированная.

@ Я специально пользуюсь не адинистраторской учёткой, чтобы вирусам не дать шанса на проникновкение.
Но в XP нет UAC.. и пользователь не спасёт.

Но тогда мне бы не приходилось запускать программы от администратора.

Подскажите, столкнулся с проблемой. Работаю не от администратора. Нужно запустить несколько программ от другого пользователя. Пытаюсь через runas запустить хотябы одну, но пароль от другой учётки не вводится

Укажите какую команду runas вы используете для запуска приложения от имени .другого пользователя. Пароль запрашивается? Пробовали сделать runas из Explorer ? ( Shift+right click по ярлыку и выбор пункта меню «Запуск от имени другого пользователя»

Ребят, чё за дела? Я не могу ввести логин или пароль переходя по ссылке скажите, как это сделать?

runas /user:admin «C:Windows
otepad.exe»

А зачем вводить . перед именем пользователя?

«.» перед именем учетки означает имя компьютера. Особенно это хорошо, когда имя компьютера не назначено вручную, а оставлено сгенерированным. Естественно, в RDP-подключении нужно указывать имя удаленного компьютера полностью

Оцените статью
ПК Знаток
Добавить комментарий

Adblock
detector