Permitir que o usuário padrão execute o programa como administrador local sem prompt de elevação

7

Eu trabalho em um ambiente em que privilégios de administrador local para usuários não são permitidos. Em absoluto. Isso é muito bom, mas também pode ser difícil quando os funcionários precisam ter permissões de administrador local para executar um programa ou instalar software que exija privilégios elevados, mesmo que seja apenas para fazer a instalação. Existe um usuário na contabilidade que recebe um DVD mensal de um fornecedor nosso que contém relatórios muito necessários. Para ver os relatórios e fazer um backup, ela deve executar o executável no DVD. O executável requer privilégios de administrador para a instalação. Então, desde que eu venho aqui, todo mês eu executo o .exe, o UAC aparece e eu forneço as informações necessárias para executar o instalador.

Se este fosse um programa único, eu usaria o truque do Microsoft Application Compatibility Toolkit para ignorar o UAC

Eu olhei em torno do Server Fault e também fiz o Google-Fu, mas não encontrei nada útil. Eu posso ser um dos poucos em uma situação única.

Eu quero usar o Poweshell para fazer a ferramenta. Idealmente, eu quero que ela seja capaz de colocar o DVD e, em seguida, lançar a ferramenta Poweshell (do seu atalho no desktop, sem dúvida) que examine a unidade de DVD e execute o arquivo setup.exe como um administrador local sem o prompt do UAC. sem ela ter que fornecer qualquer credencial.

O que eu tenho até agora é um monte de lixo no momento. Eu não sou um Jedi Powershell. Eu sou um Padaeshell padawan. Eu tenho metade do que preciso. Eu ainda preciso armazenar a senha para que não precise ser definida e inserida toda vez que ela executar o script. Eu quero que isso seja tão suave e tão poucos cliques quanto possível.

Para os creds, estou escolhendo ir com a conta de administrador local, já que a senha não muda. A conta de administrador local fará o trabalho. Preciso armazenar as informações dessa conta no computador para que o Powershell possa recuperar a conta toda vez que ela executar o script. Então, isso precisará ser um arquivo criptografado em uma variável de caminho.

# 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

Eu posso obter alguns votos negativos, mas sei em algum lugar que preciso definir e colocar em "" Read-Host "algum texto sobre como inserir a senha" -AsSecureString "" em uma variável existente ou em uma nova variável. Eu tenho que obter a entrada de senha no processo. Eu tentei alguns pontos. Pensamentos? Sabedoria? Impossível?

Windows 7 Pro Powershell v4

    
por Art.Vandelay05 05.11.2015 / 23:59

4 respostas

1

Eu encontrei uma maneira de alcançar o objetivo com o Powershell. Primeiro, um script deve ser executado no computador do usuário (apenas uma vez) para criar uma senha criptografada e armazená-la em um arquivo. Nota: O arquivo de senha armazenado não é um arquivo txt contendo a senha do administrador local em texto simples. É a saída do cmdlet ConvertFrom-SecureString.

Primeiro, o script para inserir a senha e armazená-la em um arquivo. Isso só precisará ser executado uma vez no computador de destino.

# 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

Agora, o script que o usuário executará para iniciar o programa a partir do dvd como um administrador local. Ela executará o script a partir do atalho da área de trabalho depois de inserir o dvd na unidade de disco. Após o lançamento do script, o programa é executado perfeitamente e ela pode fazer isso sem me pedir ou o outro administrador para obter assistência (o que ela ama).

# 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

Este artigo do Powershell.org foi fundamental para obter minha resposta link

    
por 06.11.2015 / 21:08
4

Executar como administrador sem ser administrador

Allow a non-admin user to run a program as a local admin account but without elevation prompt

Abaixo estão as instruções para configurar uma solução alternativa para que um aplicativo seja executado como outra conta que seja um administrador local. No entanto, a conta que executa o processo não precisa ser um administrador local no PC.

A solução alternativa do Windows (veja todas as notas abaixo)

Exemplos

  1. Create Username (domain or local): ProxyRunAsLocalAdmin

  2. Create Password (domain or local): <SomeComplexPassword>

Notas

  • Esta conta é configurada como local admin em PCs em que algo precisa ser executado com permissões de administrador sem realmente fornecer ao usuário final a execução (executar) permissões de administrador local.

  • Esta é uma opção de último recurso para coisas que não funcionarão para não administradores nas máquinas locais onde a conta (o usuário final e / ou algum grupo) explícita registry and file system level o acesso a objetos não funciona.

Segurança

  • Ninguém deve ter essas informações além de administradores de domínio, ou seja, não compartilhe com o usuário final.

Criando um atalho com o RUNAS (pode ser D:\Setup.exe )

Atalho Properties Exemplo

TARGET Field Example (below):

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

START IN Example: "C:\Program Files\BlueStacks"

IMPORTANTE:AspasduplasemtornodocampoIniciarem:podemsernecessáriassehouverounãoespaçosemocaminho.

Notasadicionaisdeconfiguração

  • VocêpodecriarumacontadeusuáriodedomínioouumacontadeusuáriodePClocalparaestepropósitoedarpermissõesdeadministradorlocalparaamáquinalocalsemprequetalsoluçãofornecessária.
  • Vocêteráqueexecutaroatalhocomo" RUNAS, etc. " quando assinado no PC como o usuário que precisará executar esse processo sem ser um administrador local. Quando você fizer isso, você será necessário digitar a credencial - armazenando em cache esta vez, mas não será necessário em cada execução subsequente do processo usando o RUNAS e / SAVECRED novamente a partir do mesmo MAME perfil de conta de usuário.
  • Esta senha para esta conta NÃO é compartilhada com ninguém, apenas o domain \ systems admins tem essa informação e conecta-a onde quer que necessário por usuário por máquina - é um perfil de conta de usuário do Windows tipo negócio também. Então, se você criar um novo perfil para um usuário e esta solução é necessária, então o atalho precisará ser executado novamente então a credencial também é armazenada em cache para seu perfil (por um administrador).

Notas de segurança

  1. Você não pode restringir o acesso de login local para a conta por meio do grupo política ou a conta não será capaz de executar RUNAS interativamente - eu já tentei isso por segurança, mas não consegui fazê-lo funcionar corretamente.
  2. Como essa é uma credencial em cache com permissões de administrador local em tecnicamente, um usuário final onde isso é salvo poderia aplicar mesma técnica RUNAS para outro EXE ou via linha de comando se isso é permitido. Isso significa que você, como administrador, precisa pesar nas vantagens e desvantagens com esta solução, incluindo os riscos. Possivelmente permitindo isso para suas pessoas de confiança ou itens que estão em curso ou necessário uma e outra vez sem realmente conceder ao usuário final o administrador local está bem.

Controles

Você tem alguns controles para esta solução, por exemplo. . .

  • Escolha quais máquinas você deseja permitir que isso execute runas de
  • Escolha quais perfis de usuário em cada máquina que você quer que isso seja executado a partir de
  • Você precisa ir para o perfil do usuário nesta máquina e digitar a credencial na hora inicial, independentemente
  • A exposição é na máquina local no nível do computador, não no nível do domínio, pois a conta local ou do AD é membro do endereço IP da máquina local
  • Não conceda a esta conta qualquer acesso de recurso de rede a qualquer coisa (somente o administrador de PC local para cada PC individual conforme necessário)
  • Se você quiser fazer uma desativação em massa desse recurso (assumindo o uso de uma conta de domínio), basta desativar a conta ou alterar a senha
  • Assegure-se de que os outros estejam cientes de algumas dessas ramificações etc. e faça com que eles aprovem, para que você não seja a pessoa que toma a decisão de usar isso ou não
por 06.11.2015 / 03:23
0

Bem, felizmente, se você eliminar o administrador local, a única opção real que você tem é a linha CMD. Powershell é bom, mas eu acho que você seria capaz de executar um lote com isso também.

A única desvantagem de cada um deles é que, se o usuário souber como abrir os scripts, ela poderá ver o que você colocou neles, o que é um enorme não, não. A única maneira de contornar isso é escrever um comando dentro do código para bloquear o script ao abrir, não executar, para solicitar uma senha.

Talvez um lote ou um Powerhell seja escrito para abordar especificamente o UAC?

    
por 06.11.2015 / 00:08
0

Em outra opção para ignorar o UAC está executando o programa na conta do sistema porque essa conta não tem UAC em um sistema UAC. Existem alguns códigos-fonte na internet. Uma solução completa está em robotronic.de/runasadminen.html Essa solução também pode ser usada para uma conta sem administrador.

    
por 12.01.2018 / 08:54