Я работаю в среде, где пользователям не разрешены права локального администратора. Вообще. Это очень приятно, но также может быть проблемой, когда сотрудники, которые должны иметь разрешения локального администратора для запуска программы или установки программного обеспечения, требующего повышенных прав, даже если только для выполнения установки. Есть бухгалтер, который ежемесячно получает 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
Разрешить пользователю без прав администратора запускать программу от имени локальной учетной записи администратора, но без запроса на повышение прав
Ниже приведены инструкции по настройке обходного пути для запуска приложения от имени другой учетной записи, которая является локальным администратором. Однако учетная запись, которая выполняет процесс, не обязательно должна быть локальным администратором на ПК.
Примеры
Создайте имя пользователя (доменное или локальное):
ProxyRunAsLocalAdmin
Создать пароль (доменный или локальный):
<SomeComplexPassword>
Ноты
Эта учетная запись настроена как local admin
на ПК, где что-то нужно запускать с правами администратора без фактического предоставления конечному пользователю, который будет запускать (выполнять) разрешения локального администратора.
Это последний вариант для вещей, которые не будут работать для неадминистраторов на локальных машинах, где их учетная запись (конечный пользователь и / или некоторая группа) явно registry
и file system
доступ к объекту уровня не работает.
Безопасность
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"
ВАЖНЫЙ: Двойные кавычки вокруг Начинать: Поле может быть обязательным независимо от того, есть ли в пути пробелы.
Дополнительные примечания по настройке
Примечания по безопасности
Управление
У вас есть некоторые элементы управления для этого решения, например. . .
Я нашел способ достичь цели с помощью 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. Это решение также можно использовать с учетной записью без администратора.