Terminal: Executar como administrador

Criado em 8 jul. 2019  ·  42Comentários  ·  Fonte: microsoft/terminal

2019-07-08_14h29_22
2019-07-08_14h29_54

Parece que há um problema ao executar o terminal "Como administrador"

Erro: o Windows não consegue encontrar "C: \ Arquivos de programas \ WindowsApps \ Microsoft.WindowsTerminal_0.2.1831.0_x64__8wekyb3d8bbwe \ WindowsTerminal.exe" Verifique se você digitou o nome corretamente e tente novamente

Issue-Bug Needs-Tag-Fix Product-Terminal Resolution-External

Comentários muito úteis

Também como sugestão, em vez de executar o terminal TODO como administrador da barra de tarefas, talvez tenha alternativas?

Por exemplo:

Ao abrir uma nova guia, o usuário pergunta ou tem alguma IU perguntando se ele deseja abrir a nova instância como administrador?
suggesstion

Ou apenas clique com o botão direito no terminal para abrir uma aba admin exatamente no mesmo diretório. (Isso seria muito útil para o PowerShell-core, uma vez que não tem uma funcionalidade agradável como o sudo)

Todos 42 comentários

@ DHowett-MSFT Eu poderia jurar que tivemos um problema duplicado em algum lugar para isso, mas não consigo encontrar agora. Você se lembra do que causa isso?

Ahh cara, desculpe se é uma duplicata.

não há razão, inicie o aplicativo sem problemas, mas clique em r e inicie quando o administrador falhar, o Windows UAC solicitará a senha do administrador duas vezes e você receberá o erro.

Também estou enfrentando esse problema. Eu procurei por terminal na barra de tarefas
win-terminal-run-as-admin-issue-1

Em seguida, fui solicitado a inserir minhas credenciais de administrador duas vezes! Um prompt de administrador após o outro. Então, quando terminei de inserir minhas credenciais pela segunda vez, esta mensagem de erro apareceu:

win-terminal-run-as-admin-issue

Acabei de instalar o terminal hoje.

Versão do terminal:
Versão: 0.2.1831.0

Versão do sistema operacional:
Windows 10 Pro
10.0.18362 Build 18362

Também como sugestão, em vez de executar o terminal TODO como administrador da barra de tarefas, talvez tenha alternativas?

Por exemplo:

Ao abrir uma nova guia, o usuário pergunta ou tem alguma IU perguntando se ele deseja abrir a nova instância como administrador?
suggesstion

Ou apenas clique com o botão direito no terminal para abrir uma aba admin exatamente no mesmo diretório. (Isso seria muito útil para o PowerShell-core, uma vez que não tem uma funcionalidade agradável como o sudo)

O suporte do Windows Terminal em execução no modo de administrador pode não ser um bom comportamento, o que significa que todos os shells em outras guias abertas a partir de Ctrl + T podem ser privilégio de administrador. Pelo que eu sei, o Terminal Windows não implementa nenhum código do Administrador para o usuário restrito. Na verdade, o que falta ao Windows é o tipo de implementação de privilégio que não requer interação com a interface do usuário, como o sudo.

Mas implementar o sudo também pode ser complicado. O fluxo do verbo runas é aproximadamente o seguinte (se algo estiver errado, por favor, me lembre):

  1. AppInfo vai e fala com a Autoridade de Segurança Local para obter o token elevado do usuário conectado da Sessão 1.
  2. AppInfo carrega uma estrutura STARTUPINFOEX (nova no Vista) e chama a nova API do Vista InitializeProcThreadAttributeList () com espaço para um atributo.
  3. OpenProcess () é chamado para obter um identificador para o processo que iniciou a chamada RPC.
  4. UpdateProcThreadAttribute () é chamado com PROC_THREAD_ATTRIBUTE_PARENT_PROCESS e usa o identificador recuperado na etapa 3.
  5. CreateProcessAsUser () é chamado com EXTENDED_STARTUPINFO_PRESENT e os resultados das etapas 1 e 4.
  6. DeleteProcThreadAttributeList () é chamado.
  7. Os resultados são coletados e as alças são limpas.

Podemos tirar uma conclusão simples. Na verdade, runas é na verdade um processo normal que inicia uma solicitação RPC para um processo com privilégios elevados. O processo de alto privilégio (serviço AppInfo) cria um processo de Administrador e define seu processo pai como um processo normal.

AppInfo atualmente não oferece suporte à configuração de um diretório de trabalho, entrada e saída (embora chamando CreateProcessAsUser) ao iniciar o processo do administrador. Este é um problema que precisa ser resolvido para permitir que o suporte a sudo seja executado no Terminal do Windows. (ShellExecuteEx SEE_MASK_NO_CONSOLE não funciona)

SHELLEXECUTEINFOW :

typedef struct _SHELLEXECUTEINFOW {
  DWORD     cbSize;
  ULONG     fMask;
  HWND      hwnd;
  LPCWSTR   lpVerb;
  LPCWSTR   lpFile;
  LPCWSTR   lpParameters;
  LPCWSTR   lpDirectory;
  int       nShow;
  HINSTANCE hInstApp;
  void      *lpIDList;
  LPCWSTR   lpClass;
  HKEY      hkeyClass;
  DWORD     dwHotKey;
  union {
    HANDLE hIcon;
    HANDLE hMonitor;
  } DUMMYUNIONNAME;
  HANDLE    hProcess;
} SHELLEXECUTEINFOW, *LPSHELLEXECUTEINFOW;

Consulte: https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-updateprocthreadattribute

| Valor | Significado |
| --- | --- |
| PROC_THREAD_ATTRIBUTE_PARENT_PROCESS | O parâmetro lpValue é um ponteiro para um identificador para um processo a ser usado em vez do processo de chamada como o pai para o processo que está sendo criado. O processo a ser usado deve ter o direito de acesso PROCESS_CREATE_PROCESS.

Os atributos herdados do processo especificado incluem identificadores, o mapa do dispositivo, afinidade do processador, prioridade, cotas, token do processo e objeto de trabalho. (Observe que alguns atributos, como a porta de depuração, virão do processo de criação, não do processo especificado por este identificador.) |

Este é definitivamente um problema da plataforma Windows. Estou atribuindo a mim mesmo para acompanhar a equipe que o possui e encerrar isso. Obrigado.

Gosto da proposta de @ YMba9g8j9CJp0wLoQf5y de autorizar uma guia com privilégio escalonado. Sou de ConEmu, onde podemos criar uma guia com ou sem privilégio de administrador. Ao criar uma guia de administração, o UAC será solicitado (para sempre).

Este não é apenas o comportamento normal dos aplicativos da Windows Store? Parece que o aplicativo de visualização foi lançado recentemente.
Mas eu preciso de uma maneira de executar projéteis elevados. Não parece possível fazer isso hoje (abra as guias como administrador).

Ei, não temos certeza se há algo que possamos fazer sobre isso. Você se importaria de enviar comentários na categoria "Plataforma do desenvolvedor> Implementação de aplicativo"? Isso ajudará a encaminhá-lo para a equipe certa e coletará algumas informações de diagnóstico muito úteis.

Vinculando: também é # 1538

Mesmo concordando com a decisão. É muito doloroso usar chocolatey sem executar explicitamente no modo de administrador. (

@musm , acabei de ter isso na minha configuração do PowerShell 6:

function GoAdmin { start-process pwsh –verb runAs }

(substitua pwsh por powershell se você estiver usando o antigo PowerShell)

Portanto, sempre que preciso instalar / atualizar pacotes via chocolate, digito GoAdmin (no PowerShell hospedado no Terminal do Windows), o que me leva a uma janela separada do PowerShell do Admin. Lá eu posso executar todos os comandos de administração chocolatey. Então, simplesmente fecho a janela de administração e digito refreshenv na minha sessão do Terminal do Windows para atualizar todas as variáveis ​​PATH. É muito fácil.

Eu definitivamente gostaria de uma maneira de iniciar wt (Windows Terminal) em vez de ir diretamente para um pwsh "vazio", mas isso não parece possível. Mas é uma queixa menor. Meh. :-)

Ainda estou recebendo um erro quando desejo iniciar o WT (0.9.433.0) como administrador:

image

Acontece em várias máquinas, com WT e Windows mais recentes (v10.0.18363.657).
Não entendo muito bem por que esse problema foi encerrado e qual é a solução alternativa.

Na verdade nunca funcionou, o último comentário que recebi foi, é um problema do Windows e eles vão levantar isso com a equipe.

eles vão aumentá-lo com a equipe.

Acho que não. É mais como “ você deve aumentar com a equipe”.

Tenho certeza de que eles não estão pensando em lançar o Win Terminal v1 com uma das funcionalidades mais importantes quebradas.
Uma pena, pois torna as versões de pré-lançamento atuais do WT inutilizáveis.

Isso abrirá uma nova janela do PowerShell com o administrador. Não é exatamente o que queremos, mas é uma solução alternativa. Crie um novo perfil com a seguinte linha de comando.

"commandline": "powershell.exe -Command \"Start-Process powershell.exe -Verb RunAs\"",

Por que está fechado? Ainda precisa haver um recurso de guia elevada.

Isso está sendo rastreado em vários outros problemas neste repositório, é por isso.

@ DHowett-MSFT Obrigado. Qual questão devemos seguir? Acho que não foi mencionado acima.

@musm , acabei de ter isso na minha configuração do PowerShell 6:

function GoAdmin { start-process pwsh –verb runAs }

(substitua pwsh por powershell se você estiver usando o antigo PowerShell)

Portanto, sempre que preciso instalar / atualizar pacotes via chocolate, digito GoAdmin (no PowerShell hospedado no Terminal do Windows), o que me leva a uma janela separada do PowerShell do Admin. Lá eu posso executar todos os comandos de administração chocolatey. Então, simplesmente fecho a janela de administração e digito refreshenv na minha sessão do Terminal do Windows para atualizar todas as variáveis ​​PATH. É muito fácil.

Eu definitivamente gostaria de uma maneira de iniciar wt (Windows Terminal) em vez de ir diretamente para um pwsh "vazio", mas isso não parece possível. Mas é uma queixa menor. Meh. :-)

No Windows, onde este arquivo de configuração está localizado?

Eu encontrei uma solução alternativa. Você pode usar chocolatey para instalar um pacote chamado sudo (choco install -y sudo). Então você pode usar o sudo conforme o esperado.

Parece que atualmente posso abrir o terminal como administrador; pelo menos funciona na minha máquina. Seria ainda melhor se pudéssemos criar uma guia como administrador como o ConEmu (que é discutido em # 632), mas atualmente não há como reabrir esse problema.

Outras solicitações de recursos pendentes relacionadas:

  • # 146 sudo que @ Pens99 pode estar interessado
  • # 576 barra de tarefas jumplist; Eu considero isso como uma substituição de # 632 devido às implicações de segurança (que eu entendo perfeitamente vindo da indústria de segurança), especialmente quando combinado com # 3246.

Espero que isso ajude a todos que seguem este tópico.

@ DHowett-MSFT Qual problema devemos seguir e começar para resolver o problema? O único outro problema referenciado que posso ver é o # 1538, que também está fechado.

Tenho certeza de que a posição da Microsoft não pode ser a de que todos devem ter direitos administrativos sobre seu usuário padrão em vez de usar uma conta de administrador separada se quiserem usar aplicativos modernos do Windows. Afinal, isso é contrário às práticas de segurança padrão.

@danstur O melhor que posso oferecer para essa preocupação é # 4217. Estamos buscando uma solução com a equipe responsável pela implantação do aplicativo. O problema é que os aplicativos são _instalados_ globalmente, mas apenas registrados por usuário. Essa foi uma infraestrutura criada para o Windows 8 que evoluiu muito lentamente para oferecer suporte até mesmo à execução de aplicativos win32 padrão, como o Terminal. # 1386 nos rastreia saindo do pacote e distribuindo como algo mais tradicional para clientes corporativos e pessoas que estão tendo problemas com o mecanismo de implantação de pacote.

@ DHowett-MSFT Obrigado pelos problemas, fico feliz em saber que está sendo rastreado.

Para esclarecer: Se eu instalar o aplicativo por meio das opções mencionadas em # 1386, poderei executá-lo como um usuário diferente ou ainda não funcionaria? Eu não me importaria em registrar o aplicativo (isso significa executar Add-AppxPackage ?) Com os outros usuários.

@ DHowett-MSFT Dustin Howett FTE Obrigado pelos problemas, fico feliz em saber que está sendo rastreado.

Para esclarecer: Se eu instalar o aplicativo por meio das opções mencionadas em # 1386, poderei executá-lo como um usuário diferente ou ainda não funcionaria? Eu não me importaria em registrar o aplicativo (isso significa executar Add-AppxPackage ?) Com os outros usuários.

Isso deve funcionar bem. Você precisará Add-AppxPackage como esses usuários, sim. :sorriso:

Fico feliz em ver que está sendo adicionado.

Isso precisa ser resolvido, pois agora em qualquer ambiente Windows configurado com contas separadas de administrador e usuário (como deveria ser), o terminal não pode ser usado por administradores se instalado a partir do (recomendado) MS Store

Fico feliz em ver que está sendo adicionado.

Isso precisa ser resolvido, pois agora em qualquer ambiente Windows configurado com contas separadas de administrador e usuário (como deveria ser), o terminal não pode ser usado por administradores se instalado a partir do (recomendado) MS Store

Uma solução alternativa que funcionou para mim foi fazer login como usuário administrador na máquina local e "instalar" novamente o terminal da Loja. Então, quando conectado como um usuário padrão, eu poderia executar o terminal como um administrador

Sim, o problema parece ser que a Loja registra o aplicativo apenas para o usuário atual. Isso é bom para a maioria dos aplicativos (na verdade, é assim que a maioria dos aplicativos deve ser instalada), mas não é bom para aplicativos administrativos como terminais.

Olá, futuro, eu: o problema de registro da loja está sendo rastreado internamente com o MSFT: 20356613 e discutido detalhadamente no nº 4217

Olá,
Também encontrei esse problema em minha conta normal. A solução é instalar o aplicativo Terminal novamente enquanto estiver conectado a uma conta de administrador. Então, você poderá funcionar como administrador em sua conta normal.

O mesmo aqui. problema parece não estar resolvido

Eu tenho outra solução alternativa menos que perfeita que não permite abrir uma _tab_ em execução como administrador, mas permite abrir uma janela do PowerShell como Administrador a partir de uma guia existente (não admin):

https://github.com/jt-github/elevate

Isso funciona da mesma maneira que adicionar o perfil sugerido por @CraigHead acima:
"commandline": "powershell.exe -Command \"Start-Process powershell.exe -Verb RunAs\"",

Exceto que minha versão é executada executando o comando elevate .

@ jt-github Isso é como sudo.

Veja aqui: https://github.com/pldmgg/Sudo

Exatamente, apenas sudo é muito mais legal do que o meu, mas o meu é tão simples que é fácil de entender e usar.

Como muitos de vocês, também encontrei esse problema, então criei as seguintes funções para abrir um shell de administrador a partir de powershell.exe, pwsh.exe ou terminal da Microsoft


# Function        Test-IsAdmin
function Test-IsAdmin {
    <#
    .Synopsis
    Tests if the user is an administrator
    .Description
    Returns true if a user is an administrator, false if the user is not an administrator
    .Example
    Test-IsAdmin
    #>
    $identity = [Security.Principal.WindowsIdentity]::GetCurrent()
    $principal = New-Object Security.Principal.WindowsPrincipal $identity
    $principal.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
}


# Function        New-AdminShell
function New-AdminShell {
    <#
    .Synopsis
    Starts an Elevated PowerShell Console.

    .Description
    Opens a new PowerShell Console Elevated as Administrator. If the user is already running an elevated
    administrator shell, a message is displayed in the console session.

    .Example
    New-AdminShell

    #>

    $Process = Get-Process | Where-Object { $_.Id -eq "$($PID)" }
    if (Test-IsAdmin = $True) {
        Write-Warning -Message "Admin Shell already running!"
    }
    else {
        if ($Process.Name -eq "powershell") {
            Start-Process -FilePath "powershell.exe" -Verb runas -PassThru
        }
        if ($Process.Name -eq "pwsh") {
            Start-Process -FilePath "pwsh.exe" -Verb runas -PassThru
        }
    }
}

# Function        New-AdminTerminal
function New-AdminTerminal {
    <#
    .Synopsis
    Starts an Elevated Microsoft Terminal.

    .Description
    Opens a new Microsoft Terminal Elevated as Administrator. If the user is already running an elevated
    Microsoft Terminal, a message is displayed in the console session.

    .Example
    New-AdminShell

    #>

    if (Test-IsAdmin = $True) {
        Write-Warning -Message "Admin Shell already running!"
    }
    else {
        Start-Process "wt.exe" -ArgumentList "-p pwsh" -Verb runas -PassThru
    }
}

Espero que alguém os considere úteis. Eu os adicionei aos meus perfis do PowerShell, para que estejam sempre disponíveis.

Olá,
Também encontrei esse problema em minha conta normal. A solução é instalar o aplicativo Terminal novamente enquanto estiver conectado a uma conta de administrador. Então, você poderá funcionar como administrador em sua conta normal.

Isso funcionou para mim também, é super irritante, mas em uma rede corporativa é praticamente a única maneira que funcionou para mim. Se você não tem um administrador local, este aplicativo é praticamente um fracasso para privs elevados em uma rede corporativa.

Fico feliz em ver que está sendo adicionado.
Isso precisa ser resolvido, pois agora em qualquer ambiente Windows configurado com contas separadas de administrador e usuário (como deveria ser), o terminal não pode ser usado por administradores se instalado a partir do (recomendado) MS Store

Uma solução alternativa que funcionou para mim foi fazer login como usuário administrador na máquina local e "instalar" novamente o terminal da Loja. Então, quando conectado como um usuário padrão, eu poderia executar o terminal como um administrador

Nah, isso não funcionou para mim :(

Então eu descobri.

Você deve ter instalado AMBOS na conta de administrador e também na conta principal, mas também a conta administrativa deve estar conectada para que funcione. Com isso, quero dizer que o computador deve estar conectado como administrador, em seguida, troque o usuário (não saia) e faça login na outra conta. Isso permitirá que o aplicativo seja executado no modo de administrador.

Estou supondo que os aplicativos da loja instalados em ambas as contas não podem ser executados como administrador, a menos que uma conta de administrador esteja conectada.

Então eu descobri.

Você deve ter instalado AMBOS na conta de administrador e também na conta principal, mas também a conta administrativa deve estar conectada para que funcione. Com isso, quero dizer que o computador deve estar conectado como administrador, em seguida, troque o usuário (não saia) e faça login na outra conta. Isso permitirá que o aplicativo seja executado no modo de administrador.

Estou supondo que os aplicativos da loja instalados em ambas as contas não podem ser executados como administrador, a menos que uma conta de administrador esteja conectada.

Isso funciona para mim. 👍

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

dev-logan picture dev-logan  ·  3Comentários

zadjii-msft picture zadjii-msft  ·  3Comentários

warpdesign picture warpdesign  ·  3Comentários

NickITGuy picture NickITGuy  ·  3Comentários

alabuzhev picture alabuzhev  ·  3Comentários