Назад | Перейти на главную страницу

Разрешить стандартному пользователю запускать программу от имени локального администратора без запроса на повышение

Я работаю в среде, где пользователям не разрешены права локального администратора. Вообще. Это очень приятно, но также может быть проблемой, когда сотрудники, которые должны иметь разрешения локального администратора для запуска программы или установки программного обеспечения, требующего повышенных прав, даже если только для выполнения установки. Есть бухгалтер, который ежемесячно получает DVD от нашего поставщика, содержащий столь необходимые отчеты. Чтобы просмотреть отчеты и сделать резервную копию, она должна запустить исполняемый файл на DVD. Исполняемый файл требует прав администратора для установки. Итак, с тех пор, как я здесь, каждый месяц я запускаю .exe, появляется UAC, и я предоставляю столь необходимую информацию для запуска установщика.

Если бы это была одноразовая программа, я бы использовал уловку Microsoft Application Compatibility Toolkit для обхода UAC. http://www.techrepublic.com/blog/windows-and-office/selectively-disable-uac-for-your-trusted-vista-applications/ Однако, поскольку это новый DVD, который ей присылают каждый месяц, мне нужен какой-то инструмент, который она могла бы использовать сама для этой операции.

Я просмотрел Server Fault, а также сделал Google-Fu, но не нашел ничего полезного. Я мог бы быть одним из тех, кто попал в уникальную ситуацию.

Я хочу использовать Poweshell для создания инструмента. В идеале я хочу, чтобы она могла вставить DVD, а затем запустить инструмент Poweshell (без сомнения, со своего ярлыка на рабочем столе), который смотрит на DVD-привод и запускает файл setup.exe от имени локального администратора без приглашения UAC, без предоставления каких-либо учетных данных.

То, что у меня есть, на данный момент - это какой-то собранный барахло. Я не джедай Powershell. Я падаван Poweshell. У меня есть половина того, что мне нужно. Мне все еще нужно сохранить пароль, чтобы его не нужно было определять и вводить каждый раз, когда она запускает скрипт. Я хочу, чтобы это было как можно плавнее и с минимальным количеством кликов.

Что касается кредитов, я выбираю учетную запись локального администратора, поскольку этот пароль не меняется. Учетная запись локального администратора выполнит свою работу. Мне нужно будет сохранить информацию об этой учетной записи на компьютере, чтобы Powershell могла извлекать учетную запись каждый раз, когда она запускает сценарий. Таким образом, это должен быть зашифрованный файл в переменной пути.

# define path to store password and input password 
$path = "C:\Users\User\Password folder"
# get the encrypted local admin password from user path
$encpwd = Get-Content $path\admin.bin
# convert admin file to secure string 
$passwd = ConvertTo-SecureString $encpwd
# define local admin credential 
$cred = new-object System.Management.Automation.PSCredential 'computer name\local admin',$passwd
# go to DVD drive launch setup.exe as local admin with no user input required
Set-Location D:\
Start-Process PowerShell -Cred $cred -ArgumentList .\setup.exe

Я мог бы получить несколько отрицательных голосов за это, но я знаю, что где-то мне нужно определить и вставить в «Read-Host» текст о вводе пароля «-AsSecureString» »в существующую переменную или новую переменную. Мне нужно ввести пароль в процесс. Я пробовал несколько мест. Мысли? Мудрость? Невозможно?

Windows 7 Pro Powershell версии 4

Запуск от имени администратора, не будучи администратором

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

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


Обходной путь Windows (см. Все примечания ниже)

Примеры

  1. Создайте имя пользователя (доменное или локальное): ProxyRunAsLocalAdmin

  2. Создать пароль (доменный или локальный): <SomeComplexPassword>

Ноты

  • Эта учетная запись настроена как local admin на ПК, где что-то нужно запускать с правами администратора без фактического предоставления конечному пользователю, который будет запускать (выполнять) разрешения локального администратора.

  • Это последний вариант для вещей, которые не будут работать для неадминистраторов на локальных машинах, где их учетная запись (конечный пользователь и / или некоторая группа) явно registry и file system доступ к объекту уровня не работает.

Безопасность

  • Никто не должен иметь эту информацию, кроме администраторов домена, т.е. не делитесь с конечным пользователем.

Создание ярлыка с помощью RUNAS (это может быть D:\Setup.exe)

Ярлык Properties пример

TARGET Пример поля (ниже):

%systemroot%\system32\runas.exe /user:domain\ProxyRunAsLocalAdmin /savecred "C:\Program Files\BlueStacks\HD-StartLauncher.exe"

START IN Пример: "C:\Program Files\BlueStacks"

ВАЖНЫЙ: Двойные кавычки вокруг Начинать: Поле может быть обязательным независимо от того, есть ли в пути пробелы.


Дополнительные примечания по настройке

  • Для этой цели вы можете создать учетную запись пользователя домена или локальную учетную запись пользователя ПК и предоставить ей права локального администратора на локальном компьютере, когда потребуется такое решение.
  • Вам нужно будет запустить ярлык с "РУНАС и др."при входе на ПК в качестве пользователя, который должен будет выполнить этот процесс, не будучи сам локальным администратором. Когда вы сделаете это, вам потребуется ввести учетные данные - кэшировать их на этот раз, но они не понадобятся при каждом последующем выполнении процесса с помощью БЕГИ КАК и / СОХРАНЕНО снова из того же профиля учетной записи пользователя, продвигаясь вперед.
  • Этот пароль к этой учетной записи НЕ передается никому, только администраторы домена \ системы имеют эту информацию и подключают ее там, где это необходимо, для каждого пользователя на машину - это также сделка для типа профиля учетной записи пользователя Windows. Итак, если вы создаете новый профиль для пользователя и это решение необходимо, тогда ярлык нужно будет запустить снова, чтобы учетные данные также были кэшированы для его профиля (администратором).

Примечания по безопасности

  1. Вы не можете ограничить локальный доступ для входа в систему для учетной записи с помощью групповой политики, или учетная запись не сможет запускать интерактивно - я уже пробовал это для безопасности, но мне не удалось заставить ее работать должным образом.
  2. Поскольку это кэшированные учетные данные с разрешениями локального администратора, технически конечный пользователь, у которого они сохранены, может применить тот же метод RUNAS к другому EXE или через командную строку, если это допустимо. Это означает, что вам, как администратору, необходимо взвесить плюсы и минусы этого решения, включая риски. Возможно, разрешить это для ваших надежных людей или элементов, которые постоянно или необходимы снова и снова, без фактического предоставления локального администратора конечного пользователя - это нормально.

Управление

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

  • Выберите, с каких машин вы хотите разрешить запускать runas
  • Выберите профили пользователей на каждом компьютере, с которого вы хотите запускать
  • Вы должны перейти в профиль пользователя на этом компьютере и ввести учетную запись в начальное время независимо от
  • Воздействие распространяется на локальный компьютер на уровне ПК, а не на уровне домена, поскольку локальная учетная запись или учетная запись AD является членом IP-адреса локального компьютера.
  • Не предоставляйте этой учетной записи доступ к сетевым ресурсам ни к чему (только локальный администратор ПК для каждого отдельного ПК по мере необходимости)
  • Если вы когда-нибудь захотите массово отключить эту функцию (при условии использования учетной записи домена), просто отключите учетную запись или измените пароль.
  • Убедитесь, что другие знают о некоторых из этих разветвлений и т. Д., И попросите их одобрить, чтобы вы не принимали решение использовать это или нет.

Я нашел способ достичь цели с помощью Powershell. Сначала на компьютере пользователя должен быть запущен сценарий (только один раз), чтобы создать зашифрованный пароль, а затем сохранить его в файл. Примечание. Сохраненный файл паролей не является текстовым файлом, содержащим пароль локального администратора в виде обычного текста. Это результат выполнения командлета ConvertFrom-SecureString.

Сначала сценарий для ввода пароля и сохранения его в файле. Это нужно будет запустить только один раз на целевом компьютере.

# Enter encrypted password once and store to file; define variables 
$path = "C:\Folder\Folder\"
$passwd = Read-Host "enter desired password" -AsSecureString
$encpwd = ConvertFrom-SecureString $passwd
$encpwd > $path\filename.bin

Теперь сценарий, который пользователь запустит для запуска программы с DVD от имени локального администратора. Она запустит сценарий с ярлыка на рабочем столе после того, как вставит DVD в дисковод. После запуска скрипта программа работает отлично, и она может делать это, не спрашивая меня или другого администратора о помощи (что ей очень нравится).

# define path to store password and input password 
$path = "C:\folder\folder"
# get the encrypted password from the path
$encpwd = Get-Content $path\filename.bin
# convert file to secure string 
$passwd = ConvertTo-SecureString $encpwd
# define needed credential 
$cred = new-object System.Management.Automation.PSCredential 'computer name\account name',$passwd
# go to DVD drive launch setup.exe as user with privileges to launch the program with no user input required
Set-Location D:\
Start-Process PowerShell -Cred $cred -ArgumentList .\setup.exe

Эта статья Powershell.org помогла мне получить ответ http://powershell.org/wp/2013/11/24/saving-passwords-and-preventing-other-processes-from-decrypting-them/

Что ж, к счастью, если вы удалите локального администратора, единственный реальный вариант, который у вас останется, - это строка CMD. Powershell хорош, но я думаю, вы тоже сможете запустить пакет с этим.

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

Может быть, пакет или PowerShell написаны специально для UAC?

При другом варианте обхода UAC программа запускается под системной учетной записью, потому что у этой учетной записи нет UAC в системе UAC. В Интернете есть несколько исходных кодов. Полное решение находится на robotronic.de/runasadminen.html. Это решение также можно использовать с учетной записью без администратора.